我正在尝试使用json_decode php函数解码看起来像下面的json字符串:
"{id:"1",fields:[{id:"1",value:"asdasd"},{id: "2",value:"asdasd"},{id:"3",value:"asdasd"}]}"
我尝试了question的各种选项。像:
$foo = utf8_encode($json_string);
$data = json_decode($foo, true);
或者:
json_decode(str_replace ('\"','"', $json_string), true);
即使:
json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true );
但是,我尝试的所有内容总是得到null
。
那是为什么?
答案 0 :(得分:2)
首先,您的JSON无效。在询问任何JSON lint tool之前,您应该首先验证您的JSON,这将告诉您错误的确切位置和位置。
此外,在PHP中处理JSON时,应始终检查错误。您可以查看json_last_error函数的官方文档,了解如何正确执行验证。
$json = 'your_json_string';
$array = json_decode($json, true);
if (json_last_error()) {
die('Invalid JSON provided!');
}
printf('<pre>Valid JSON output: %s</pre>', print_r($array, true));
答案 1 :(得分:1)
<?php
$data='{
"id": "1",
"fields": [{
"id": "1",
"value": "asdasd"
}, {
"id": "2",
"value": "asdasd"
}, {
"id": "3",
"value": "asdasd"
}]
}';
$dataNew=json_decode($data,true);
echo '<pre>';
print_r($dataNew);
你的json无效。 json-key需要在双引号内。之后,json_decode将正常工作。
输出是:
Array
(
[id] => 1
[fields] => Array
(
[0] => Array
(
[id] => 1
[value] => asdasd
)
[1] => Array
(
[id] => 2
[value] => asdasd
)
[2] => Array
(
[id] => 3
[value] => asdasd
)
)
)
答案 2 :(得分:0)
您的JSON返回Null,因为在JSON中,键应该是string.Your JSON格式不正确,因此返回Null。 尝试将其重写为:
{
"id":"1",
"fields":[
{
"id":"1",
"value":"asdasd"
},
{
"id": "2",
"value":"asdasd"
},{
"id":"3",
"value":"asdasd"
}
]
}