diff --git a/reference/simdjson/functions/simdjson-decode.xml b/reference/simdjson/functions/simdjson-decode.xml new file mode 100644 index 0000000000..9d239ac14e --- /dev/null +++ b/reference/simdjson/functions/simdjson-decode.xml @@ -0,0 +1,306 @@ + + + + + simdjson_decode + JSON 文字列をデコードする + + + + &reftitle.description; + + mixedsimdjson_decode + stringjson + boolassociative&false; + intdepth512 + + + JSON エンコードされた文字列を受け取り、PHP の値に変換します。 + コンピュータアーキテクチャがサポートしている場合、 + json_decode よりも高速な + SIMD (Simultaneous Instruction, Multiple Data) 実装を使用します。 + + + + + &reftitle.parameters; + + + json + + + デコードする JSON string。 + + + この関数は UTF-8 でエンコードされた文字列でのみ動作します。 + + + この関数は json_decode がデコードできる + 有効な入力をパースしますが、4 GiB 未満の長さに限ります。 + + + + + associative + + + &true; の場合、JSON オブジェクトは連想配列 (&array;) として返されます。 + &false; の場合、JSON オブジェクトは &object; として返されます。 + + + + + depth + + + デコードする構造のネストの最大深さ。 + 値は 0 より大きく、 + 2147483647 以下でなければなりません。 + + 呼び出し側は妥当な小さい値を使用するべきです。 + 現在の json_decode の実装とは異なり、 + 大きな深さはより多くのバッファ領域を必要とし、 + 再帰の深さが増加します。 + + + + + + + + &reftitle.returnvalues; + + json でエンコードされた値を適切な + PHP の型として返します。truefalse、 + null はそれぞれ &true;、&false;、&null; + として返されます。 + + + + + &reftitle.errors; + + json が無効な場合、PECL simdjson 2.1.0 以降では + SimdJsonException がスローされます。 + 以前は RuntimeException がスローされていました。 + + + depth が許容範囲外の場合、 + PECL simdjson 3.0.0 以降では SimdJsonValueError + がスローされます。以前は E_WARNING + レベルのエラーが発生していました。 + + + + + &reftitle.examples; + + + <function>simdjson_decode</function> の例 + + +]]> + + &example.outputs; + + + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) +} +array(3) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) +} +]]> + + + + 無効なオブジェクトプロパティへのアクセス + + PHP の命名規則で許可されていない文字 (ハイフンなど) を含む + オブジェクト内の要素にアクセスするには、 + 要素名を波括弧とアポストロフィで囲みます。 + + +{'foo-bar'}; // 12345 + +?> +]]> + + + + <function>simdjson_decode</function> でよくある間違い + + +]]> + + + + <parameter>depth</parameter> エラー + + array -> array -> string) +$json = json_encode( + [ + 1 => [ + 'English' => [ + 'One', + 'January' + ], + 'French' => [ + 'Une', + 'Janvier' + ] + ] + ] +); + +// 異なる深さでのエラーを表示 +var_dump(simdjson_decode($json, true, 4)); +try { + var_dump(simdjson_decode($json, true, 3)); +} catch (SimdJsonException $e) { + echo "Caught: ", $e->getMessage(), "\n"; +} +?> +]]> + + &example.outputs; + + + array(2) { + ["English"]=> + array(2) { + [0]=> + string(3) "One" + [1]=> + string(7) "January" + } + ["French"]=> + array(2) { + [0]=> + string(3) "Une" + [1]=> + string(7) "Janvier" + } + } +} +Caught: The JSON document was too deep (too many nested objects and arrays) +]]> + + + + <function>simdjson_decode</function> での大きな整数 + + +]]> + + &example.outputs; + + + float(1.2345678901235E+19) +} +]]> + + + + + + + &reftitle.notes; + + + JSON 仕様は JavaScript ではなく、JavaScript のサブセットです。 + + + + + デコードに失敗した場合、 + SimdJsonException がスローされ、 + SimdJsonException::getCode と + SimdJsonException::getMessage を使用して + エラーの正確な内容を特定できます。 + + + + + + &reftitle.seealso; + + json_encode + json_decode + + + + diff --git a/reference/simdjson/functions/simdjson-is-valid.xml b/reference/simdjson/functions/simdjson-is-valid.xml new file mode 100644 index 0000000000..76c83a8de1 --- /dev/null +++ b/reference/simdjson/functions/simdjson-is-valid.xml @@ -0,0 +1,190 @@ + + + + + simdjson_is_valid + JSON 文字列が有効かどうかを調べる + + + + &reftitle.description; + + boolsimdjson_is_valid + stringjson + intdepth512 + + + JSON エンコードされた文字列を受け取り、有効な場合に true を返します。 + + + + + &reftitle.parameters; + + + json + + + バリデーションする JSON string。 + + + この関数は UTF-8 でエンコードされた文字列でのみ動作します。 + + + この関数は json_decode がデコードできる + 入力をバリデーションしますが、4 GiB 未満の長さに限ります。 + + + + + depth + + + バリデーションする構造のネストの最大深さ。 + 値は 0 より大きく、 + 2147483647 以下でなければなりません。 + + 呼び出し側は妥当な小さい値を使用するべきです。 + 現在の json_decode の実装とは異なり、 + 大きな深さはより多くのバッファ領域を必要とし、 + 再帰の深さが増加します。 + + + + + + + + &reftitle.returnvalues; + + json が有効な JSON 文字列の場合は + &true; を、そうでない場合は &false; を返します。 + + + + + &reftitle.errors; + + json が 4 GiB を超える場合、 + PECL simdjson 2.1.0 以降では SimdJsonException + がスローされます。以前は RuntimeException + がスローされていました。 + + + depth が許容範囲外の場合、 + PECL simdjson 3.0.0 以降では SimdJsonValueError + がスローされます。以前は E_WARNING + レベルのエラーが発生していました。 + + + + + &reftitle.examples; + + + <function>simdjson_decode</function> の例 + + +]]> + + &example.outputs; + + + + + + <parameter>depth</parameter> エラー + + array -> array -> string) +$json = json_encode( + [ + 1 => [ + 'English' => [ + 'One', + 'January' + ], + 'French' => [ + 'Une', + 'Janvier' + ] + ] + ] +); + +// 異なる深さでのエラーを表示 +var_dump(simdjson_is_valid($json, 4)); +var_dump(simdjson_is_valid($json, 3)); +?> +]]> + + &example.outputs; + + + + + + + + + &reftitle.notes; + + + JSON 仕様は JavaScript ではなく、JavaScript のサブセットです。 + + + + + デコードに失敗した場合、 + SimdJsonException がスローされ、 + SimdJsonException::getCode と + SimdJsonException::getMessage を使用して + エラーの正確な内容を特定できます。 + + + + + + &reftitle.seealso; + + json_encode + json_decode + + + + diff --git a/reference/simdjson/functions/simdjson-key-value.xml b/reference/simdjson/functions/simdjson-key-value.xml new file mode 100644 index 0000000000..b95b2cf89b --- /dev/null +++ b/reference/simdjson/functions/simdjson-key-value.xml @@ -0,0 +1,129 @@ + + + + + simdjson_key_value + 指定された JSON ポインタに位置する JSON 文字列の値をデコードする + + + + &reftitle.description; + + mixedsimdjson_key_value + stringjson + stringkey + boolassociative&false; + intdepth512 + + + 指定された JSON ポインタで見つかった値をデコードして返します。 + + + + + &reftitle.parameters; + + + json + + + クエリおよびデコードする JSON string。 + + + この関数は UTF-8 でエンコードされた文字列でのみ動作します。 + + + この関数は json_decode がデコードできる + 有効な入力をパースしますが、4 GiB 未満の長さに限ります。 + + + + + key + + + JSON ポインタ string。 + + + + + associative + + + &true; の場合、JSON オブジェクトは連想配列 (&array;) として返されます。 + &false; の場合、JSON オブジェクトは &object; として返されます。 + + + + + depth + + + デコードする構造のネストの最大深さ。 + 値は 0 より大きく、 + 2147483647 以下でなければなりません。 + + 呼び出し側は妥当な小さい値を使用するべきです。 + 現在の json_decode の実装とは異なり、 + 大きな深さはより多くのバッファ領域を必要とし、 + 再帰の深さが増加します。 + + + + + + + + &reftitle.returnvalues; + + json でエンコードされた値のうち、 + key が参照する部分を適切な + PHP の型として返します。truefalse、 + null はそれぞれ &true;、&false;、&null; + として返されます。 + + + + &reftitle.errors; + + json または key が無効な場合、 + あるいは keyjson 内に見つからない場合、 + PECL simdjson 2.1.0 以降では SimdJsonException + がスローされます。以前は RuntimeException + がスローされていました。 + + + depth が許容範囲外の場合、 + PECL simdjson 3.0.0 以降では SimdJsonValueError + がスローされます。以前は E_WARNING + レベルのエラーが発生していました。 + + + + &reftitle.seealso; + + json_encode + simdjson_decode + + + +