我遇到了由JavaScript腳本生成的JSON在由JavaScript解析時不兼容的問題JSON.parse
。考慮以下示例:Ruby生成的JSON與JavaScript的JSON解析器不兼容
# Ruby
require 'json'
hash = {}
hash["key"] = "value with \u001a unicode"
hash.to_json
=> '{"key":"value with \u001a unicode"}'
// JavaScript
JSON.parse('{"key":"value with \u001a unicode"}')
=> JSON.parse: bad control character in string literal at line 1 column 2 of the JSON data
問題是Unicode字符\u001a
。解決方法是將\u001a
轉換爲\\u001a
,但事情是,\u001a
被Ruby自動插入到字符串中。我無法可靠地後處理結果。任何關於如何解決這個問題的想法?
請注意,我希望在JavaScript執行環境中調用JSON.parse
,而不是在Ruby的解釋器中。
我跑你的代碼,我實際上得到這個輸出:'=>「{\」key \「:\」值與\\ u001a unicode \「}」' –
我也運行你的代碼,它的工作精細。 –
您正在查看終端中的輸出。 '\\ u001a'是終端是物理字符串'\ u001a'。 Ruby將反斜槓顯示爲\\,因此您可以區分單個字符「\ u001a」和寫入「\ u001a」的六個字符串。 – Max