Конвертировать в JS Object
Как преобразовать это в объект JS:
{"info":["Image has been added"],"success":["No success Sorry!"]}
JSON.parse выдает ошибку и говорит, что " не является допустимым JSON. Я новичок в JS и не могу понять, как с этим справиться.
Я использую Connect-Flash из Express для передачи флэш-сообщений на стороне клиента. Для этого я использую следующий код:
if Object.keys(locals.flashes).length !== 0
script.
flashArr="#{JSON.stringify(locals.flashes)}"
На стороне клиента представление объекта не является допустимым JSON. Как я могу справиться с этим.
2 ответа
Как и предполагалось, вам нужно проанализировать HTML-сущности на символы, то есть преобразовать "
в "
, Самый простой способ - использовать регулярное выражение:
var str = '{"info":["Image has been added"],"success":["No success Sorry!"]}';
var obj = JSON.parse(str.replace(/"/g,'"'));
console.log(obj);
Конечно, если в коде есть другие сущности HTML, может быть лучше использовать встроенный анализатор HTML:
var str = '{"info":["Image has been added"],"success":["No success Sorry!"]}';
var el = document.createElement('div');
el.innerHTML = str;
var obj = JSON.parse(el.textContent);
console.log(obj);
Но для одного объекта замена, скорее всего, быстрее и эффективнее.
Как преобразовать это в объект JS?
Если я попробую вот так, он вернет мне действительный объект JS. Я просто глобально заменил "
с ""
используя String.prototyp.replace, а затем проанализируйте его с помощью JSON.parse() следующим образом
invalid_data = '{"info":["Image has been added"],"success":["No success Sorry!"]}';
valid_data = invalid_data.replace(/"/g, '"');
console.log(JSON.parse(valid_data));