Возможно ли декодировать?
Добрый день.
Возможно ли декодировать следующие строки возвращающиеся после 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, время: 16:42. |