shevchenkonik
@shevchenkonik

Как можно в невалидном JSON'e заменить одинарные кавычки на двойные?

Но также нужно учитывать, что в JSON есть куски html-кода с двойными, которые вложены в одинарные (на данный момент).

Всем спасибо за ответы!
  • Вопрос задан
  • 1410 просмотров
Пригласить эксперта
Ответы на вопрос 2
AppFA
@AppFA
Frontend developer at Yandex
Возможно не самое удачное решение, но на скорую руку:
'use strict';

const invalidJSON = `{"root": {'html': '<div class="header1"></div>', 'fragment': '<div class="footer"></div>'}}`;

let validJSON = invalidJSON.replace(/'/g, '"');
validJSON = validJSON.replace(/="+[A-z0-9]*"/g, (str) => {
    return str.replace(/"/g, '\\"');
});

console.log(validJSON);
// => {"root": {"html": "<div class=\"header1\"></div>", "fragment": "<div class=\"footer\"></div>"}}
Ответ написан
Комментировать
@napa3um
Если JSON получен из контролируемого источника (т.е., заведомо не будет содержать деструктивного кода), то можно сделать так:
var badJson = "{'foo': 'bar'}";
var goodJson = JSON.stringify(eval('(function(){return ' + badJson + ';})()'));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы