Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.04.2018, 20:46
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

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

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.04.2018, 21:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

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.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 29.04.2018, 19:30
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

Возможно ли по подробнее?
1. Что не так с JSON?
2. Для чего возвращать строки в таком виде:
"\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435 \\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.\"
и как их преобразовать?
Я как понимаю, на серваке русские символы преобразуются в такой вид, что бы можно было передать клиенту. И на клиенте нужно преобразовать.
Но пока не понятно что это за такой вид?
Вы предлагает вывести выставить табуляцию и вывести в более читабельный вид?
Ответить с цитированием
  #4 (permalink)  
Старый 29.04.2018, 20:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ivnjavascript
Я как понимаю, на серваке русские символы преобразуются в такой вид, что бы можно было передать клиенту.
А с чего это вас волнует? Это Unicode, и никоим образом не ошибка, браузер отобразит именно русский текст. Если так принципиально и на сервере РНР и версии не ниже 5.4, то функция json_encode может принимать параметром константу JSON_UNESCAPED_UNICODE, с которой национальные символы не будут кодироваться в Unicode. Если на сервере иной язык, ищите в нем решение этого вопроса.
Ответить с цитированием
  #5 (permalink)  
Старый 29.04.2018, 20:57
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

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 строкой и не требует никаких дополнительных действий.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 29.04.2018, 21:09
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

Спасибо, теперь стало ясно.
Благодарю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли к сайту одностраничнику на AngularJS прикрутить Wordpress? Mechman Angular.js 0 05.07.2015 03:51
Возможно ли считать инфу посетителей с чужого сайта? Klerik Общие вопросы Javascript 2 20.09.2013 15:42
зависымый select на html возможно ли? pro_ef Библиотеки/Тулкиты/Фреймворки 1 20.02.2013 22:49
Возможно ли? zork0 Общие вопросы Javascript 8 12.12.2012 16:09
Возможно ли как-то структурировать массив match? dump Общие вопросы Javascript 1 29.07.2012 12:19