自 PHP 5.2.0 起,JSON 擴充預設內建並編譯進了 PHP。
JSON 序列化介面JsonSerializable
實現 JsonSerializable 的類可以 在 json_encode() 時定製他們的 JSON 標記法。
JsonSerializable::jsonSerialize — 指定需要被序列化成 JSON 的資料
Example #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]
Example #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"}
Example #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
Example #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!"
JSON 函數
json_decode — 對 JSON 格式的字串進行編碼
json_encode — 對變數進行 JSON 編碼
json_last_error_msg — Returns the error string of the last json_encode() or json_decode() call
json_last_error — 返回最後發生的錯誤