Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
值为\x26的JSON会中断PHPs JSON_解码_Php_Javascript_Json_Browser_Google Api - Fatal编程技术网

值为\x26的JSON会中断PHPs JSON_解码

值为\x26的JSON会中断PHPs JSON_解码,php,javascript,json,browser,google-api,Php,Javascript,Json,Browser,Google Api,JSON结果是破坏PHPs JSON_解码。确切地说,以下字符串正在中断解码:“Sticky\x26amp;Sweet Tour” 然而,浏览器似乎能够理解它:& 声称它是无效的JSON 在PHP方面,我已经尝试过:而且 有什么想法吗 发生的事情是,这是无效的JSON。来自该url的响应不正确--JSON不允许两位十六进制二进制转义序列,只允许unicode码点转义序列。这里应该是&,不过——不需要转义序列 不知道google/freebase为什么输出无效的JSON。您的JSON应该如下所示:

JSON结果是破坏PHPs JSON_解码。确切地说,以下字符串正在中断解码:“Sticky\x26amp;Sweet Tour”

然而,浏览器似乎能够理解它:&

声称它是无效的JSON

在PHP方面,我已经尝试过:而且


有什么想法吗

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


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

您的JSON应该如下所示:

"Sticky \\x26amp; SweetTour"

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

为什么要尝试解码一个不是JSON格式的字符串?为什么说它不是JSON格式?jsonlint.com对我来说无效。我认为JSON中不允许使用
\x
符号。它不应该是
\u0026
?它只是一个字符串,可以包含您希望它包含的任何字符。问题是JSON解析器正在崩溃。这个字符串似乎来自/到xml,但这不是问题所在。数据库中该值的实际值是多少?它是“Sticky\x26amp;Sweet Tour”、“Sticky&Sweet Tour”还是“Sticky&Sweet Tour”?为什么浏览器会理解它?它是一个有效的javascript构造,因此浏览器在接受的JSON(
JSON.parse
示例)中是允许的,或者使用某种
eval()
机制来评估JSON(
$.getJSON()
,使用JSONP示例)。您不应该依赖于此行为。
不知道google/freebase为什么输出无效的JSON。
-事实上,这似乎是一个需要报告的错误-或者如果是设计的,请解释。和+1。@Peeter因为示例使用的是JSONP(技术上与JSON无关).JSONP被评估为javascript,这是一种不同的语言。有效的JSON不一定是有效的javascript,反之亦然。哦,没有看其他测试,它是无效的。它应该是(正确地报告为无效的JSON).2级解释中的常见错误。JSON解析器在javascript解析器之后看到了
&;
。因此需要有
“\\x26”
才能将
\x26
传递给JSON解析器。@Peeter因为您只转义字符串一次,所以双斜杠会被单引号吃掉。请尝试以下操作: