我有以下JSON格式的字符串:
{
"hooks":[
{
"type":"subscribe",
"id":1331741592.6925,
"email":"JoeX@test-email.com",
"status":"Active",
"custom_fields":"{\"first_name\":\"Joe\",\"last_name\":\"X\"}",
"ip_created":"24.199.200.142",
"list_id":"33",
"list_type":"internal",
"list_name":"Administrator List 2",
"list_optin":false
},
{
"type":"subscribe",
"id":1331741592.7067,
"email":"JaneY@test-email.com",
"status":"Active",
"custom_fields":"{\"first_name\": \"Jane\",\"last_name\":\"Y\"}",
"ip_created":"24.199.200.142",
"list_id":"33",
"list_type":"internal",
"list_name":"Administrator List 2",
"list_optin":false
}
]
}
我想使用PHP json_decode()
函数将它放在一个关联数组中。
当我运行脚本时,调试会将新数组的值显示为null
,因此我认为解码失败了。我们没有运行PHP 5.3,因此我无法使用json_last_error()
。这是代码:
$hooks = (the JSON string from above);
$hooksArray = json_decode($hooks, true);
为什么$hooksArray
会回来null
?
答案 0 :(得分:0)
您的PHP源代码中是否有JSON字符串?也许它不能正确解释转义的反斜杠。
我在Python中尝试了以下实验以供参考:通过REPL将JSON数据转储为多行字符串,并使用json.loads()对其进行解码。它在custom_fields字符串的第一个实例中的字符串引号中被阻塞。当我检查多行字符串时,所有的转义都消失了,只留下了引号。
当我将相同的JSON数据放在外部文件中并加载它时,它运行正常。
我将JSON数据放在外部文件中,并将所有'\''实例替换为'\\'',然后第一个实验开始起作用。
也许这对你也有用。