如何将这个对象数组解码为Php数组, 我使用了json_decode()但返回了Null
$a = "[
{
id:1,
name:'rajan',
class:10
},{
id:2,
name:'amrit',
class:12
},{
id:3,
name:'arun',
class:11
}
]";
答案 0 :(得分:5)
您的JSON无效,这就是json_decode返回null的原因。
SyntaxError: Unexpected token i
http://php.net/manual/en/function.json-decode.php
以适当的PHP类型返回json中编码的值。值true,false和null分别返回为TRUE,FALSE和NULL。如果无法解码json或编码数据深于递归限制,则返回NULL。
我还修复了你的JSON:
[
{
"id": 1,
"name":"rajan",
"class":10
},{
"id":2,
"name":"amrit",
"class":12
},{
"id":3,
"name":"arun",
"class":11
}
]
使用代码修复损坏的JSON:
$replace_keys = preg_replace("/(\w*):/i", '"$1":', $a);
$fix_values = preg_replace("/:'(\w*)'/i", ':"$1"', $replace_keys);
然后,您可以在$replace_keys
中使用json_decode
。我不确定这是否是最好的方法,因为你的json中的小变化可能会破坏它,但它会用提供的示例修复它。
修复JSON的完整代码:
$a = "[
{
id:1,
name:'rajan',
class:10
},{
id:2,
name:'amrit',
class:12
},{
id:3,
name:'arun',
class:11
}
]";
$replace_keys = preg_replace("/(\w*):/i", '"$1":', $a);
$fix_values = preg_replace("/:'(\w*)'/i", ':"$1"', $replace_keys);
die($fix_values);