PHP 5.2.0 以降、JSON 拡張機能が組み込まれており、デフォルトで PHP にコンパイルされます。
JSON シリアル化インターフェイス JsonSerializable
JsonSerializable を実装するクラスは、json_encode() のときに JSON 表現をカスタマイズできます。
JsonSerializable::jsonSerialize - JSON にシリアル化する必要があるデータを指定します
例 #1 配列を返します
<?php class ArrayValue implements JsonSerializable { public function __construct(array $array) { $this->array = $array; } public function jsonSerialize() { return $this->array; } } $array = [1, 2, 3]; echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT); ?>
上記のルーチンは出力します:
[ 1, 2, 3 ]
例 #2 連想配列を返します
<?php class ArrayValue implements JsonSerializable { public function __construct(array $array) { $this->array = $array; } public function jsonSerialize() { return $this->array; } } $array = ['foo' => 'bar', 'quux' => 'baz']; echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT); ?>
上記のルーチン出力:
{ "foo": "bar", "quux": "baz" }
例 #3 整数を返します
<?php class IntegerValue implements JsonSerializable { public function __construct($number) { $this->number = (integer) $number; } public function jsonSerialize() { return $this->number; } } echo json_encode(new IntegerValue(1), JSON_PRETTY_PRINT); ?>
上記のルーチンは出力します:
1
例 #4 文字列を返します
<?php class StringValue implements JsonSerializable { public function __construct($string) { $this->string = (string) $string; } public function jsonSerialize() { return $this->string; } } echo json_encode(new StringValue('Hello!'), JSON_PRETTY_PRINT); ?>
上記のルーチンは出力します:
"Hello!"