@viktorulyushev

Как преобразовать строку в объект?

С сервера приходит такой ответ,
{"success":1,"data":"{\"esiaId\":null,\"legalMunicipality\":{\"id\":12,\"name\":\"Энгельс\"},\"factMunicipality\":{\"id\":12,\"name\":\"Энгельс\"},\"is_subscribed\":false,\"subscriptions\":null}"}


Каким образом можно преобразовать чтобы он отображался как нормальный объект?
eval только некоторую часть преобразует нормально,а вот объект внутри объекта все равно остается как строка.
JSON.parse не может распознать нормально.
  • Вопрос задан
  • 553 просмотра
Пригласить эксперта
Ответы на вопрос 3
let data = {"success":1,"data":"{\"esiaId\":null,\"legalMunicipality\":{\"id\":12,\"name\":\"Энгельс\"},\"factMunicipality\":{\"id\":12,\"name\":\"Энгельс\"},\"is_subscribed\":false,\"subscriptions\":null}"}

data = JSON.parse(data.data)

console.dir(data)


Ответ написан
Комментировать
Eridani
@Eridani
Мимо проходил
JSON.parse()?
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Проблема в (как это по-русски?) escaping:
// так не сработает:
const response = '{"success":1,"data":"{\"esiaId\":null,\"legalMunicipality\":{\"id\":12,\"name\":\"Энгельс\"},\"factMunicipality\":{\"id\":12,\"name\":\"Энгельс\"},\"is_subscribed\":false,\"subscriptions\":null}"}';

// а вот так всё получится:
const response2 = '{"success":1,"data":"{\\\"esiaId\\\":null,\\\"legalMunicipality\\\":{\\\"id\\\":12,\\\"name\\\":\\\"Энгельс\\\"},\\\"factMunicipality\\\":{\\\"id\\\":12,\\\"name\\\":\\\"Энгельс\\\"},\\\"is_subscribed\\\":false,\\\"subscriptions\\\":null}"}';
console.log(response2);
const parsed = JSON.parse(response2);
const data = JSON.parse(parsed.data);
console.log(data.legalMunicipality.name); // Энгельс
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы