2011-08-12 18 views
0

我該如何解析下面的json字符串而不用打開和關閉引號?它看起來像JavaScript JSON.parse函數解析帶引號的字符串!因此會引發語法錯誤。我該如何解析json字符串而無需打開和關閉字符串引號?

這是我的字符串;

"[ 
    { 
     "pk": 1, 
     "model": "pms.category", 
     "fields": { 
      "name": "Rent", 
      "add_date": "2011-07-28 01:33:21", 
      "agent": 3, 
      "category_type": "I", 
      "add_user": 3, 
      "desc": "Rent" 
     } 
    }, 
    { 
     "pk": 2, 
     "model": "pms.category", 
     "fields": { 
      "name": "Deposit Rent", 
      "add_date": "2011-07-28 01:33:21", 
      "agent": 3, 
      "category_type": "I", 
      "add_user": 3, 
      "desc": "Rent Deposit" 
     } 
    } 
]" 

編輯: 一些有趣的是,當我跑我的開發機器的這個字符串,它被正確分析,但在生產服務器上失敗。

+3

如果引號是數據的一部分,那麼它是一個字符串,而不是JSON。 – Quentin

回答

3

更換一對引號,然後解析字符串:

s = s.replace(/^"|"$/g, ''); 
var jsonDoc = JSON.parse(s); 

此外,有發射畸形的JSON的程序或庫的作者發送錯誤報告。

+0

仍然沒有運氣,我正在chrome調試器中運行,並且仍然出現語法錯誤!嘗試複製字符串並在Chrome控制檯上運行它,這真是太棒了! – gath

+0

@gath如果您自己沒有發現問題,請隨時提出有關格式錯誤的JSON的新問題(包括http://pastebin.com/的鏈接,如果它比20行更長)。也可以隨意拍拍那個畸形的JSON的作者。 – phihag

+0

@philag,用單引號取代了外部雙引號,效果很好。 JSON.parse(s.replace(/^「|」 $ /克, 「'」))。非常感謝。 – gath

1

你或許應該刪除您的字符串外引號...

mystring = mystring.replace(/^"|"$/g,'') 
1

1,本應該是你的JSON格式,否則將無法正確JSON.parse

[ 
     { 
      "pk": 1, 
      "model": "pms.category", 
      "fields": { 
       "name": "Rent", 
       "add_date": "2011-07-28 01:33:21", 
       "agent": 3, 
       "category_type": "I", 
       "add_user": 3, 
       "desc": "Rent" 
      } 
     }, 
     { 
      "pk": 2, 
      "model": "pms.category", 
      "fields": { 
       "name": "Deposit Rent", 
       "add_date": "2011-07-28 01:33:21", 
       "agent": 3, 
       "category_type": "I", 
       "add_user": 3, 
       "desc": "Rent Deposit" 
      } 
     } 
    ] 
解析

2.從頭標籤中間的github存儲庫中包含json2.js。