Преобразование строки в JSON через JSON.parse

221
06 августа 2021, 17:00

Я получаю с сервера экранированную строку в виде:

"{\"username\": \"admin\", \"City\": \"\", \"Age\": null, \"Image\": \"/images/static/imagination/cb8b8fc3-b450-4338-80b5-c8a1b93ec58a_yb8VU8b.jpg\", \"Sex\": \"M\"}"

Далее я преобразую эту строку через JSON.parse в надежде получить объект javascript, но получаю только неэкранированную строку:

{"username": "admin", "City": "", "Age": null, "Image": "/images/static/imagination/cb8b8fc3-b450-4338-80b5-c8a1b93ec58a_yb8VU8b.jpg", "Sex": "M"}

Я не нашел среди описания этой функции подобного поведения.

Далее я обнаружил, что если второй раз применяю JSON.parse, то получаю объект, как и хотел изначально. Тестировал в Chrome.

Является ли такое поведение нормальным (соответствует стандарту?) и стоит ли применять JSON.parse для первого преобразования?

Answer 1

Для того чтобы применить JSON.parse(), вы должны передать в качестве аргумента текст в формате JSON. А вы передаете не совсем в формате JSON. Но вам везет, и обработчик парсит и выводит это уже в формате JSON. Если вас не смущает дважды вызывать parse, и во всех случаях работает корректно - почему бы и нет?

READ ALSO
Как сделать блок некликабельным

Как сделать блок некликабельным

Есть скрипт выпадающего блока, проблема в том, если его открыть, то он закрывается по любому клику (не важно кликните вы по открывшимся блоке...

377
Передача данных между элементами React

Передача данных между элементами React

Пытаюсь разобраться, как передавать данные между siblings-компонентамиИдея такая: нужно сделать так, чтоб класс active был только у одного child-компонента...

175
TodoList React || Ошибка, возможно синтаксис

TodoList React || Ошибка, возможно синтаксис

Два дня ломаю голову, не могу найти ошибку, гуру React помогитеВот код -

248