Я пытаюсь заменить все "
на \"
и проанализировать строку с помощью JSON, но браузер выдает ошибку SyntaxError: JSON Parse error: Unrecognized token '\'
.Замена «с помощью»
Ниже приведен код. Строка a является JSON.параметром хорошо, но хотя я заменяю все "
на \"
в строке b, так что он должен быть идентичным строке a, синтаксический анализ не выполняется. У меня есть код в JSBIN.
var a = '[\"{\\"objects\\":[],\\"background\\":\\"#fff\\"}\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]';
var b = '["{\"objects\":[],\"background\":\"#fff\"}","","","","","","","","",""]';
// Replace " with \"
// Charcode 92 is \
b = b.replace('"', String.fromCharCode(92)+'"', "g");
a = JSON.parse(a);
console.log(a);
b = JSON.parse(b);
console.log(b);
Любая идея, как я мог бы строка b разбираться с JSON.parse? Если я заменил все "
на \"
вручную, он хорошо разбирается, но я ищу автоматический путь.
Строка - объекты JSON.stringified Fabric.js в массиве. Простой работает с вашим регулярным выражением, но немного сложнее сбой: http://jsbin.com/vexuk/3/edit. Любая идея почему? –
@Timo Да, JS regexp не очень хорошо разбирает JSON, так же просто. В нем есть вложенные фигурные скобки, и, что еще хуже, регулярное выражение JS не имеет возможности справиться с этим. Если бы это был PHP, perl, C# или что-то в этом роде, это было бы возможно с регулярным выражением. Например, с помощью [PCRE] (http://regex101.com/r/tR3vO9). Но, к сожалению, регулярное выражение JS не обрабатывает рекурсию в regex ... – Jerry
Итак, есть ли общее решение? –