(PHP 8 >= 8.3.0)
json_validate — 文字列が有効なJSONかどうかを調べる
指定された文字列が、文法的に有効なJSONかどうかを返します。 json_validate() が true
を返す場合、 同じ depth
と flags
を指定して json_decode() を実行してもデコードは成功します。
json_validate() が false
を返す場合、 原因は json_last_error() と json_last_error_msg() を使って取得できます。
デコードされたJSONペイロードを使わない場合、 json_validate() は json_decode() よりもメモリ使用量が少なくなります。 なぜなら、ペイロードを含む配列やオブジェクト構造を組み立てる必要がないからです。
json_decode() の直前に json_validate() をコールすると、 文字列を不必要に2回パースすることになります。 なぜなら、json_decode() はデコードしている間に暗黙のうちに文字列を検証するからです。
よって json_validate() は、JSON のペイロードをすぐに使わない場合、かつ有効なJSON文字列かどうかを知る必要がある場合にのみ使うべきです。
json
検証する文字列
この関数は、UTF-8 でエンコードされた文字列でのみ動作します。
注意:
PHP の実装は、 » RFC 7159 の JSON のスーパーセットです。
depth
デコードされるネスト構造の深さの最大値。 この値は 0
より大きく、 2147483647
以下でなければいけません。
flags
現状は、JSON_INVALID_UTF8_IGNORE
のみを受け入れます。
例1 json_validate() の例
<?php
var_dump(json_validate('{ "test": { "foo": "bar" } }'));
var_dump(json_validate('{ "": "": "" } }'));
?>
上の例の出力は以下となります。
bool(true) bool(false)