值为\ x26的JSON会破坏PHPs json_decode

时间:2012-01-03 16:29:50

标签: php javascript json browser google-api

https://www.googleapis.com/freebase/v1/search?query=madonna#

JSON结果打破了PHP的json_decode。确切地说,以下字符串正在打破解码:“Sticky \ x26amp; Sweet Tour”。

然而,浏览器似乎能够理解它:http://jsfiddle.net/nggX2/& http://jsfiddle.net/QUVFt/

http://jsonlint.com/声称它是无效的JSON。

在PHP方面,我尝试过:http://codepad.viper-7.com/suUbQDhttp://codepad.viper-7.com/QjqCH7

有关正在发生的事情的任何想法?

2 个答案:

答案 0 :(得分:7)

发生的事情是这是无效的JSON。该url的响应不正确 - JSON不允许\xXX两位十六进制二进制转义序列,只允许\uXXXX unicode代码点转义序列。这里它应该只是& - 不需要转义序列。

不知道为什么google / freebase会输出无效的JSON。

答案 1 :(得分:1)

您的JSON应如下所示:

"Sticky \\x26amp; SweetTour"

需要转义斜杠,因为它是转义字符。