簡體   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