【发布时间】:2013-07-19 18:20:20
【问题描述】:
我无法让 json_decode 处理我收到的特定字符串。
我已将范围缩小到这一行:
"systemNotes[6]": "2013 年 1 月 9 日下午 12:52 - 测试名称 - 将账单地址 2 从更改为发货名字:发货姓氏:电子邮件地址:发货地址:发货地址 2:发货城市:运送邮编/邮政:运送国家:运送国家:电话:账单名:账单姓氏:账单地址:账单地址 2:账单 C"
从这个问题复制 json,问题不可重现 - 但原始 json 的代表性 sn-p 在这里:http://codepad.org/ZzrC7rqQ - 并将其放入 jsonlint.com 给出:
Parse error on line 3:
... "systemNotes[6]": "January 09, 2013 12
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
这个字符串有什么问题导致它是无效的 json?
编辑
我设法找到了确切的代码。
"systemNotes[6]":"January+09%2C+2013+12%3A52+PM+-+First+Name+-+Changed++Billing+Address+2+From++to+Shipping+First+Name %3A%09+运费+姓氏+姓名%3A%09+电子邮件+地址%3A%09+运费+地址%3A+%09+运费+地址+2%3A+%09+运费+城市%3A+%09+运费+Zip%2F邮政%3A+%09+运费+国家/地区%3A+%09+运费+州%3A+%09+电话%3A+%09+帐单+名字%3A+%09+帐单+姓氏%3A+%09 +帐单+地址%3A+%09+帐单+地址+2%3A+%09+帐单+C"
这似乎没问题,所以问题可能出在我执行 parse_str 时,这是我正在使用的代码:
$response = apiConnection($data);
parse_str($response, $parse);
$each = json_decode($parse['data']);
foreach($each as $key => $order){
//do something
}
【问题讨论】:
-
你是如何收集字符串的?
-
我正在查询一个 API,它把它作为一个字符串发回给我。然后我使用 parse_str 将其留在数组中。
-
你能检查字符串是否包含非 UTF 8 字符吗?
-
感谢 AD7six 的链接:codepad.org/ZzrC7rqQ
-
出于好奇,传递过来的字符串是怎么生成的?它在你的控制之下吗?