2014-01-13 34 views
1

解析json字符串時出現問題。如何解析無效的json字符串(使用十六進制值)

這裏的字符串(它的問題的一部分):

{ 
    "type":"meaning", 
    "terms":[ 
    { 
     "type":"text", 
     "text":"some value.", 
     "language":"ru" 
    }, 
    { 
     "type":"url", 
     "text":"\x3ca href\x3d\x22http://readmas.ru/arts/bodyart/znachenie-tatuirovok.-chast-i.html\x22\x3…ttp://readmas.ru/arts/bodyart/znachenie-tatuirovok.-chast-i.html\x3c/a\x3e", 
     "language":"ru" 
    }] 
}, 

注:
這些功能不爲我工作:

  1. replace
  2. JSON.parse
  3. $.parseJSON
+0

這是看起來不錯請告訴我們更多關於問題 –

+0

我實際上正在開發一個Chrome擴展,這個字符串是由谷歌字典返回給我的。我不能改變請求的方式(因爲它是從google獲得答案的唯一方式)。請求如下: –

+2

除了可能在字符串本身上進行搜索和替換外,沒有解決方法,因爲您的JSON無效,並且無法分析。 – adeneo

回答

4

不同於JavaScript中,JSON notation只支持兩個字節\uNNNN轉義序列,而不是\xNN序列。試試這個:

var cleaned = input.replace(/\\x([0-9a-f]{2})/g, '\\u00$1'); 
var output = $.parseJSON(cleaned); 
console.log(output); 

Demonstration

此外,爲了使這個示範工作,我不得不做出其他幾個修改您的字符串,我認爲只是你怎麼會在這裏的格式問題的結果:

  • 完成了\xNN轉義序列在字符串(\x3…ttp)的中間時破裂。
  • 刪除對象文字末尾的逗號。

在任何情況下,如果你可以讓你的服務(或任何給你這個文件)爲你提供有效的JSON,那麼它可能會更好。

+0

謝謝!爲我工作 –

相關問題