json

json_encode

$array = [ 'a' => 'dog', 'b' => 'cat', 'c' => 'cow', 'd' => 'duck', 'e' => 'goose', 'f' => 'elephant' ];

echo json_encode($array);

这将输出: {"a":"dog","b":"cat","c":"cow","d":"duck","e":"goose","f":"elephant"}

不编码输出.

$array = [ 'a' => '测试不编码输出' ];

echo json_encode($array), "\n", json_encode($array, JSON_UNESCAPED_UNICODE);


这将输出:


{"a":"\u6d4b\u8bd5\u4e0d\u7f16\u7801\u8f93\u51fa"}
{"a":"测试不编码输出"}

美化输出.

$array = [ 'a' => 'dog', 'b' => 'cat', 'c' => 'cow', 'd' => 'duck', 'e' => 'goose', 'f' => 'elephant' ];

echo json_encode($array, JSON_PRETTY_PRINT);

这将输出:

{
    "a": "dog",
    "b": "cat",
    "c": "cow",
    "d": "duck",
    "e": "goose",
    "f": "elephant"
}

json_decode

JSON格式的字符串进行解码.


$json = '{"a":"dog"}';

var_dump(json_decode($json)); // 以对象形式返回
var_dump(json_decode($json, true)); // 以数组形式返回

以上示例会输出:


object(stdClass)#1 (1) {
  ["a"]=>
  string(3) "dog"
}
array(1) {
  ["a"]=>
  string(3) "dog"
}

大整形转换成字符串.


$json = '{"number": 12345678901234567890}';

var_dump(json_decode($json));
var_dump(json_decode($json, false, 512, JSON_BIGINT_AS_STRING));

以上示例会输出:


object(stdClass)#1 (1) {
  ["number"]=>
  float(1.2345678901235E+19)
}
object(stdClass)#1 (1) {
  ["number"]=>
  string(20) "12345678901234567890"
}

json_validate

PHP >= 8.3

检查一个字符串是否包含有效的JSON.


<?php
var_dump(json_validate('{ "test": { "foo": "bar" } }'));
var_dump(json_validate('{ "": "": "" } }'));
?>

以上示例会输出:


bool(true)
bool(false)

json_last_error

最后发生的错误。

<?php
// An invalid UTF8 sequence
$text = "\xB1\x31";

$json  = json_encode($text);
$error = json_last_error();

var_dump($json, $error === JSON_ERROR_UTF8);
?>

示例将输出:

string(4) "null"
bool(true)