Сервер возвращает мне строку JSON, подобную этой:
{"payload":{"data":"{\"notification_type\":\"{\"type1\":\"{\"type2\":\"type2 value\"}\"}\"}"}}
Эта строка, как я понимаю, не может быть проанализирована с помощью API JSON.parse (), поскольку вложенные строки JSON в строке должны быть правильноубежали. Если строка не экранирована должным образом, я получаю следующую ошибку:
Uncaught SyntaxError: Unexpected token n in JSON at position 22
Итак, строка должна быть экранирована должным образом с учетом вложенной природы, как показано ниже, чтобы JSON.parse () мог ее обработать:
var properString = "{\"payload\":{\"data\":\"{\\\"notification_type\\\":\\\"{\\\\\\\"InternalKey\\\\\\\":\\\\\\\"InternalValue\\\\\\\"}\\\"}\"}}";
console.log("Proper String = ");
console.log(properString);
var firstLevelObject = JSON.parse(properString);
console.log("First Level Object = ");
console.log(firstLevelObject);
var secondLevelObject = JSON.parse (firstLevelObject.payload.data);
console.log("Second Level Object = ");
console.log(secondLevelObject);
var thirdLevelObject = JSON.parse(secondLevelObject.notification_type);
console.log("Third Level Object = ");
console.log(thirdLevelObject);
Вот так выводит консоль Google Chrome:
Однако я не могу преобразовать неправильную строку изсервер должен правильно экранировать строку, как определено в переменной properString
, чтобы JSON был правильно сконструирован, что может быть пройдено. Как можно преобразовать строку с правильными escape-символами?
Справочные источники: я сослался на этот ответ, чтобы понять, как следует добавлять вложенные escape-символы, но в ответе не указывается, как происходит преобразованиеможно сделать.