由于双引号,json_decode()返回NULL

时间:2014-02-11 15:23:16

标签: php json

我正在尝试使用json_decode($s,true)解析JSON字符串。 如果我var_dump我的字符串,它看起来像:

string(186) "[{"ta_id":97497,"partner_id":"229547","partner_url":"http://partner.com/deeplink/to/229547"},"ta_id":97832,"partner_id":"id34234","partner_url":"http://partner.com/deeplink/to/id34234"}]"

你可以在行的开头看到那些双引号(以及错误的语法高亮),我认为这是我的问题。 json_last_error()返回4JSON_ERROR_SYNTAX

我该如何解决这个问题?该字符串是从POST数据中提取的。感谢

4 个答案:

答案 0 :(得分:2)

您的Json无效。

Parse error on line 7:
..."    },    "ta_id": 97832,    "partne
---------------------^
Expecting '}', ',', ']'

答案 1 :(得分:1)

我怀疑你会发现那些双引号只是var_dump表示字符串而不是问题的一部分。

将它们从末端剥离并validate the JSON,你会得到:

[
    {
        "ta_id": 97497,
        "partner_id": "229547",
        "partner_url": "http://partner.com/deeplink/to/229547"
    },
    "ta_id": 97832,
    "partner_id": "id34234",
    "partner_url": "http://partner.com/deeplink/to/id34234"
}
]

Parse error on line 7:
..."    },    "ta_id": 97832,    "partne
---------------------^
Expecting '}', ',', ']'

您缺少{

答案 2 :(得分:1)

  [
    {
      "ta_id":97497,
      "partner_id":"229547",
      "partner_url":"http://partner.com/deeplink/to/229547"
    },
    "ta_id":97832,
    "partner_id":"id34234",
    "partner_url":"http://partner.com/deeplink/to/id34234"
  }
]

从这个细分中可以看出,您错过了{。这是语法错误的原因。

答案 3 :(得分:1)

双引号不是问题。您在JSON中缺少一个大括号{。正确的JSON字符串应如下所示:

[
    {
        "ta_id": 97497,
        "partner_id": 229547,
        "partner_url": "http://partner.com/deeplink/to/229547"
    },
    { <----------------------------- this was the problem
        "ta_id": 97832,
        "partner_id": "id34234",
        "partner_url": "http://partner.com/deeplink/to/id34234"
    }
]

使用JSONLint.com等在线验证服务验证JSON字符串可以帮助您轻松找到问题。