为什么这个有效的JSON字符串不会有效?

时间:2013-02-16 10:12:36

标签: json

我的Ajax-Request确实返回了这个结果(通常是一个有效的JSON字符串):

{"status":"ERROR","message":"Errore: Ti prego di inserire la domanda!"}

这是响应标题:

Connection:Keep-Alive
Content-Length:80
Content-Type:application/json; charset=utf-8
Date:Sat, 16 Feb 2013 10:02:18 GMT
Keep-Alive:timeout=5, max=97
Server:Apache/2.2.21 (Win32) PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By:PHP/5.3.8

当我将JSON字符串从浏览器控制台直接复制/粘贴到像http://jsonlint.com这样的JSON解析器时,会产生“意外令牌”。为什么呢?

我也通过在文本编辑器中重写相同的字符串来测试它 - 当然这个结果是“有效的”......

1 个答案:

答案 0 :(得分:2)

正如你所说,你所引用的是有效的JSON。我希望你有一个或多个“隐形”字符导致问题。 (它/它们不存在于您的问题中,复制和粘贴会产生“有效”结果。)这通常是我们看到这个问题时的情况。

Context-Length标题证实了这一点。它表示内容的长度为80,但JSON中只有71个字符,其中没有一个是UTF-8中的多字节字符。所以我倾向于怀疑无效的隐形字符,可能是在响应的开头或结尾。如果将导致http://jsonlint.com问题的相同字符串粘贴到基本文本编辑器中,您应该能够找到它们;通常它们会显示为有趣的符号。

相关问题