изменить & mdash; снова и снова обратил внимание на то, что эту проблему нельзя решить с помощью регулярного выражения.
Важно различать нотацию JSON как сериализованную форму и нотацию константы объекта JavaScript.
Это:
{ x: "hello" }
- это совершенно правильное значение JavaScript (фрагмент выражения), так что это:
var y = { x: "hello" };
дает вам точно такой же результат, как:
var y = { "x": "hello" };
Другими словами, значение "y" в любом из этих случаев будет точно таким же. Совершенно точно так же, что невозможно было бы сказать, какая из этих двух констант использовалась для инициализации «у».
Теперь, если вы хотите перевести строку , содержащую стиль JSON "Сокращения JSON" без кавычек, в допустимый JSON, единственное, что нужно сделать, - это проанализировать и восстановить строку с кавычками вокруг имена свойств. То есть вам придется либо написать свой собственный «расслабленный» синтаксический анализатор JSON, который может справиться с идентификаторами без кавычек в качестве имен свойств, либо найти готовый синтаксический анализатор, который может обрабатывать такой смягченный синтаксис.
В вашем случае, похоже, что когда у вас есть «расслабленный» парсер, все готово; Вам не нужно переводить обратно. К счастью, ваш «неверный» ответ JSON полностью интерпретируется самим JavaScript, поэтому, если вы доверяете источнику данных (а это большой «если»), вы сможете оценить его с помощью «eval ()» .