Возможно ли декодировать?
Добрый день.
Возможно ли декодировать следующие строки возвращающиеся после POST запроса?: { "errors": "{\"count\": [{\"message\": \"\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\", \"code\": \"required\"}], \"email\": [{\"message\": \"\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\", \"code\": \"required\"}], \"count_man\": [{\"message\": \"\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\", \"code\": \"required\"}]}", "success": false } Заранее спасибо. |
var errors = JSON.parse({ "errors": "{\"count\": [{\"message\": \"\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\", \"code\": \"required\"}], \"email\": [{\"message\": \"\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\", \"code\": \"required\"}], \"count_man\": [{\"message\": \"\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\", \"code\": \"required\"}]}", "success": false }['errors']); alert(JSON.stringify(errors, 0, '\t'))Какие проблемы? Только вот разбираться надо не тут, а на сервере - какого хрена он такую фигню творит и пакует json в json. |
Возможно ли по подробнее?
1. Что не так с JSON? 2. Для чего возвращать строки в таком виде: "\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435 \\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\" и как их преобразовать? Я как понимаю, на серваке русские символы преобразуются в такой вид, что бы можно было передать клиенту. И на клиенте нужно преобразовать. Но пока не понятно что это за такой вид? Вы предлагает вывести выставить табуляцию и вывести в более читабельный вид? |
Цитата:
|
ivnjavascript, нет, проблема в другом:
У вас в json { "errors": x, "success": false }на место x вкладывается в виде строки ещё один json { "count": [ { "message": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.", "code": "required" } ], "email": [ { "message": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.", "code": "required" } ], "count_man": [ { "message": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.", "code": "required" } ] }Из-за чего возникает двойное переэкранирование (\\) и необходимость декодировать сначала ответ, а затем ещё и параметр. Должно быть так: { "errors": { "count": [ { "message": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.", "code": "required" } ], "email": [ { "message": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.", "code": "required" } ], "count_man": [ { "message": "\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.", "code": "required" } ] }, "success": false }а не как у вас, тогда можно будет спокойно работать с объектом. Конкретно же \uXXXX, как выше заметили - это стандартная юникод кодировка, при декодировании json браузером прозрачно становится обычной javascript строкой и не требует никаких дополнительных действий. |
Спасибо, теперь стало ясно.
Благодарю.:thanks: |
Часовой пояс GMT +3, время: 04:01. |