繁体   English   中英

JSON有什么问题?

[英]What's wrong with my JSON?

有人注意到这个JSON有什么问题吗? 它可以在JSONLint.com上进行验证,但是Chrome和Firefox的本机JSON解析功能都无法正确解析它。

有任何想法吗?

{
        "result": "{\"players\":[{\"name\":\"User 522\",\"turn\":true,\"score\":0},{\"name\":\"User 925\",\"turn\":false,\"score\":5}],\"enableControls\":false}",
        "error": "null",
        "id": "7"
}

即使您的json看起来很奇怪,它也符合json规范。

您的问题来自在Firefox或Chrome中定义文字时的转义问题。 “ \\”(反斜杠)字符需要用反斜杠转义。

范例1:

JSON.parse('{"key":"\""}'); breaks

范例2:

JSON.parse('{"key":"\\""}'); works

因此,JSONLint.com是正确的,Firefox是正确的,Chrome也是正确的。

如果通过ajax请求进行测试,则不会遇到此问题,因为转义将自动处理。 您遇到问题是因为您想将json字符串作为文字输入(因此需要转义)

我希望这能帮到您。

我现在知道发生了什么。 result本身就是一个嵌入的json字符串。

让我重新组合并再次回答。

您的服务器在这里对您没有任何帮助。

同样,给定的字符串将不会解析,因此不是有效的JSON字符串。 而且我没有办法按摩它以使其解析。

您确定这是返回的字符串,或者这是调试器显示的字符串的可视化图像?

那不是有效的JSON文本,这是一种不太恰当的JavaScript文字。

您不解析文字,而是解析文本以获得文字。

您的文字会更好地表示为...

 
 
 
 
  
  
  var obj = { result: { players: [{ name: "User 522", turn: true, score: 0 }, { name: "User 925", turn: false, score: 5 }], enableControls: false }, error: null, id: 7 };
 
 
  

这是等效的JSON文本。 尝试解析此。

 
 
 
 
  
  
  var json = '{"result":{"players":[{"name":"User522","turn":true,"score":0},{"name":"User925","turn": false,"score":5}],"enableControls":false},"error":null,"id":7}';
 
 
  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM