У меня возникает проблема, когда JSON, созданный скриптом Ruby, несовместим при анализе JavaScripts JSON.parse
. Рассмотрим следующий пример:JSON, выпущенный Ruby, не совместим с парсером JSON JavaScript
# 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
Вопрос является юникода характер \u001a
. Решением этого является выход \u001a
в \\u001a
, но дело в том, что \u001a
автоматически вставляется в строку Ruby. Я не могу надежно выполнить обработку результата. Любые идеи о том, как это решить?
Обратите внимание, что я хочу позвонить JSON.parse
внутри среды выполнения JavaScript, а не внутри интерпретатора Ruby.
Я запустил ваш код, и на самом деле получаю это как вывод: '=>" {\ "key \": \ "value with \\ u001a unicode \"} "' –
Я тоже запустил ваш код, и он работал хорошо. –
Вы смотрите на выход в терминале. '\\ u001a' - это терминал, это физическая строка' \ u001a'. Ruby отображает обратную косую черту как \\, поэтому вы можете указать разницу между единственным символом '\ u001a' и шестью символьными строками, также написанными' \ u001a'. – Max