json_decode

関数の概要

PHPの json_decode 関数は、JSON形式の文字列をPHPの配列やオブジェクトに変換するために使われます。Web APIやJavaScriptから受け取ったJSONデータをPHPで扱いやすい形に変換する際に非常に便利な関数です。使い方もシンプルで、デコードしたいJSON文字列を渡すだけで直感的に利用できます。

パラメータの説明

  • string $json:変換対象のJSON形式の文字列を指定します。
  • bool $assoc = false:デコード結果を連想配列として返すかどうかを指定します。trueにすると配列、falseだとオブジェクトが返ります。
  • int $depth = 512:デコードの再帰の深さを指定します。デフォルトは512です。
  • int $flags = 0:デコードの動作を変更するフラグを設定します。主なフラグには JSON_BIGINT_AS_STRING などがあります。

戻り値

正常にデコードできた場合、json_decode はPHPのオブジェクトまたは配列を返します。$assocパラメータが true のときは連想配列として、false のときはオブジェクトとして返されます。JSONが無効な場合やエラーが発生した場合は null を返します。

使用例

基本的な使い方(オブジェクトとして取得)

$json = '{"name":"山田太郎","age":30}';
$data = json_decode($json);
echo $data->name;  // 出力: 山田太郎

JSON文字列をPHPのオブジェクトに変換し、オブジェクトのプロパティとしてアクセスしています。

連想配列として取得する方法

$json = '{"name":"山田太郎","age":30}';
$data = json_decode($json, true);
echo $data['name'];  // 出力: 山田太郎

配列で使いたい場合は、第2引数に true を設定することで連想配列に変換できます。

ネストしたJSONのデコード

$json = '{
  "user": {
    "name": "山田太郎",
    "email": "taro@example.com"
  },
  "status": "active"
}';
$data = json_decode($json, true);
echo $data['user']['email'];  // 出力: taro@example.com

複雑なネスト構造のJSONも連想配列に変換して階層的にアクセス可能です。

関連する関数

  • json_encode:PHPの配列やオブジェクトをJSON文字列に変換する関数。
  • json_last_error:最後に発生したJSON処理のエラーを取得する関数。
  • json_last_error_msg:最後に発生したJSON処理のエラー内容を文字列で取得する関数。

まとめ

json_decode はPHPでJSON文字列を扱う際の基本的かつ重要な関数です。オブジェクトや連想配列のいずれかで扱えるため、用途に合わせて使い分けが可能です。API連携や外部データの取り込み時に必須の知識なので、パラメータの意味や戻り値の取り扱い方をしっかり理解しておきましょう。