在使用PHP json_decode函数解析下面的JSON数据时,它返回null,因为键名没有双引号。你能帮我解决这个问题吗? [例如:Instanceid键名,LineageId键名未嵌入双引号]
JSON数据:
[
{
InstanceId: 1,
LineageId: 1,
ModifiedDate: "/Date(1225229100000+0000)/",
Name: "HP StorageWorks 1000 Modular Smart Array Active/Active",
Status: "Published",
Version: 1
},
{
InstanceId: 3897,
LineageId: 1,
ModifiedDate: "/Date(1278697020000+0000)/",
Name: "HP StorageWorks 1000 Modular Smart Array Active/Active",
Status: "Published",
Version: 2
},
]
答案 0 :(得分:2)
这不解析的原因是因为它只是无效的JSON。为了使其有效,成员名称必须是显示in the JSON RFC的字符串,并且您需要修剪数组中的尾随逗号。
[
{
"InstanceId": 1,
"LineageId": 1,
"ModifiedDate": "/Date(1225229100000+0000)/",
"Name": "HP StorageWorks 1000 Modular Smart Array Active/Active",
"Status": "Published",
"Version": 1
},
{
"InstanceId": 3897,
"LineageId": 1,
"ModifiedDate": "/Date(1278697020000+0000)/",
"Name": "HP StorageWorks 1000 Modular Smart Array Active/Active",
"Status": "Published",
"Version": 2
}
]
一些帮助JSON的好资源:
Linter:http://jsonlint.com/
RFC:http://rfc7159.net/rfc7159
JSON示例:http://json.org/example
答案 1 :(得分:1)
我已经多次发生了类似的事情。
幸运的是,有一个函数可以调用AFTER json_decode json_last_error_msg(),它可以告诉你更多关于出错的地方。
但是,我会告诉你一些我认为错误的事情: