json_decode失败了

时间:2012-06-27 13:55:16

标签: php json

我有以下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

1 个答案:

答案 0 :(得分:0)

您的PHP源代码中是否有JSON字符串?也许它不能正确解释转义的反斜杠。

我在Python中尝试了以下实验以供参考:通过REPL将JSON数据转储为多行字符串,并使用json.loads()对其进行解码。它在custom_fields字符串的第一个实例中的字符串引号中被阻塞。当我检查多行字符串时,所有的转义都消失了,只留下了引号。

当我将相同的JSON数据放在外部文件中并加载它时,它运行正常。

我将JSON数据放在外部文件中,并将所有'\''实例替换为'\\'',然后第一个实验开始起作用。

也许这对你也有用。