json_encode

関数の概要

json_encodeは、PHPの配列やオブジェクトをJSON形式の文字列に変換するための関数です。JSONはデータ交換フォーマットとして広く使われており、API通信やJavaScriptとのデータ受け渡しなどで非常に便利です。

パラメータの説明

  • value (mixed): 変換したいPHPの配列やオブジェクトを指定します。
  • options (int, 任意): エンコード動作をカスタマイズするフラグのビットマスク。例として JSON_PRETTY_PRINT(整形出力)や JSON_UNESCAPED_UNICODE(Unicode文字のエスケープをしない)などがあります。
  • depth (int, 任意): ネストの深さの最大値。デフォルトは512です。

戻り値

成功するとJSON形式の文字列を返します。変換に失敗した場合は false を返します。エラーの詳細は json_last_error() 関数で取得できます。

使用例

基本的な使い方

<?php
$data = ['name' => '田中', 'age' => 28, 'city' => '東京'];
$json = json_encode($data);
echo $json;
?>

この例では連想配列をJSON文字列に変換し、{"name":"田中","age":28,"city":"東京"}と出力されます。

整形されたJSONを出力する

<?php
$data = ['name' => '田中', 'age' => 28, 'city' => '東京'];
$json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo $json;
?>

JSON_PRETTY_PRINTを使うことで読みやすい整形済みJSONを、JSON_UNESCAPED_UNICODEで日本語などのUnicodeをエスケープせずに表示できます。

オブジェクトをJSONに変換する

<?php
class User {
    public $name;
    public $age;
    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$user = new User('佐藤', 35);
echo json_encode($user, JSON_UNESCAPED_UNICODE);
?>

この例はオブジェクトをJSONにエンコードし、{"name":"佐藤","age":35}という文字列が得られます。

深いネストを持つ配列の変換(最大深度の指定)

<?php
$nested = ['level1' => ['level2' => ['level3' => 'deep']]];
$json = json_encode($nested, 0, 3);
echo $json;
?>

ネストの深さを3に設定して変換しています。深さ制限を超える場合は失敗します。

関連する関数

  • json_decode: JSON文字列をPHPの配列またはオブジェクトに変換します。
  • json_last_error: 最後に発生したJSON変換のエラーコードを返します。
  • json_last_error_msg: 最後に発生したJSON変換のエラーメッセージを文字列で返します。

まとめ

json_encodeはPHPで配列やオブジェクトから簡単にJSON文字列を生成できる強力な関数です。API開発やJavaScript連携に欠かせず、JSON_PRETTY_PRINTJSON_UNESCAPED_UNICODEなどのオプションを活用することで、用途に合わせた見やすいJSONの生成が可能です。使い方をしっかり理解して、効率的にJSONデータを扱いましょう。