【PHP】意外と簡単だった:jsonデータをvalidateする方法

masyus-work-eyecatch-php

仕事でjsonデータをPHP経由でDBに格納する処理を作ることがあり、リクエストデータがjson形式になっているかをチェックするロジックが必要になったので、その時の調査結果と実装方法をメモがてら。

リクエストデータがjson形式になっているかどうかは、json_decode()の返り値がNULLか否かで判定できる

結論から言うとこの通り。プログラムで書くと

という感じで、非常に簡単に書ける。

json_decode()はjson形式のデータをstdClassに変換してPHP上で扱えるようにする関数なのだが、

  1. 渡された引数値がjson形式でない
  2. json形式ではあるものの、対象データが再帰制限を超えている

ような時にNULLを返すようになっている。

https://www.php.net/manual/ja/function.json-decode.php

CakePHP3でjsonデータのバリデーションを実装する場合

次のように、カスタムバリデーションを使うと良さげ: