javascript
  • json
  • 2015-07-28 43 views 0 likes 
    0

    我有這樣的字符串:雙轉換被串qouted到JSON在JavaScript

    var jsonStr = "{"option":"option value","response":"response value","order":3}"; 
    

    當我將其轉換爲JSON對象是這樣的:

    var jsonObj = JSON.parse(jsonStr); 
    

    它給出了一個SyntaxError。但如果用這樣的單引號聲明字符串:

    var jsonStr = '{"option":"option value","response":"response value","order":3}'; 
    

    它工作正常。問題是該字符串來自服務器用雙引號。我如何解析這個?

    +0

    之前「{」選項:另一句名言是缺少... – jrath

    +0

    爲什麼不在服務器序列化並通過JSON序列化已經? – andrescpacheco

    回答

    3

    的語法錯誤是JavaScript字符串文字中:

    var jsonStr = "{"option:"option value","response":"response value","order":3}"; 
           ^The error is here 
    

    它從來沒有達到JSON.parse(jsonStr),劇本已經通過,然後中止。

    您無法從JavaScript修復它,因爲腳本在拋出異常並死亡後無法重寫自己的源代碼。

    您必須在服務器上修復此問題。

    +0

    檢查編輯的問題 – suheb

    +1

    @suheb即使使用更新的json字符串,此答案仍然適用。 –

    0

    錯誤是如何編寫json字符串。

    var jsonStr = "{"option":"option value","response":"response value","order":3}" 
    

    JavaScript不讀你的jsonStr作爲一個字符串,而不是它到達此行var jsonObj = JSON.parse(jsonStr);

    還可以去除開閉引號之前拋出一個錯誤。然後,檢查它是否已經是對象解析

    var jsonStr = {"option":"option value","response":"response value","order":3}; 
    var jsonObj = typeof jsonStr != 'object' ? JSON.parse(jsonStr) : jsonStr; 
    
    相關問題