一组Javascript对象到Php数组

时间:2015-01-29 14:46:31

标签: php arrays json

如何将这个对象数组解码为Php数组, 我使用了json_decode()但返回了Null

$a = "[
{
    id:1,
    name:'rajan',
    class:10
},{
    id:2,
    name:'amrit',
    class:12
},{
    id:3,
    name:'arun',
    class:11
}
]";

1 个答案:

答案 0 :(得分:5)

您的JSON无效,这就是json_decode返回null的原因。

SyntaxError: Unexpected token i

http://json.parser.online.fr/

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);