1

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

}

我想使用 PHPjson_decode()函数将其放入关联数组中。

当我运行脚本时,调试将新数组的值显示为null,因此我认为解码失败。我们没有运行 PHP 5.3,所以我不能使用json_last_error(). 这是代码:

$hooks = (the JSON string from above);
$hooksArray = json_decode($hooks, true);

任何想法为什么$hooksArray会回来null

4

1 回答 1

0

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

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

当我将相同的 JSON 数据放入外部文件并加载它时,它工作正常。

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

也许这也对你有用。

于 2012-06-27T14:11:30.207 回答