関数の概要
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_PRINTやJSON_UNESCAPED_UNICODEなどのオプションを活用することで、用途に合わせた見やすいJSONの生成が可能です。使い方をしっかり理解して、効率的にJSONデータを扱いましょう。
