Вход | Регистрация


Как сделать ЧтениеJSON без преобразования unicod?

Как сделать ЧтениеJSON без преобразования unicod?
Я
   vi0
 
17.12.18 - 10:32
Как сделать ЧтениеJSON без преобразования unicod?

Например, чтобы при выполнении следующего кода, в считанной переменной Соответствие1 текст оставался как и был без преобразования в символы?

//Пример строки с юникодом

//{"NAME":"\u0421\u043a\u0438\u0434\u043a\u0430 \u043e\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u041f\u041f - 5%","COUPON":"SL-4IFEJ-S4LCPZB"}

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Текст1);
Соответствие1 = ПрочитатьJSON(ЧтениеJSON, Истина);
 
 
   Сияющий в темноте
 
1 - 17.12.18 - 13:17
Согласно правилу json,последовательность /uXXXX указывает код символа.Парсер его в символ и переводит,а вы что хотите?
Написать свой парсер json проще простого,ведь в 1с есть обьект соответствие.
   ptiz
 
2 - 17.12.18 - 13:18
(0) Например, заменить "\u" на свою хрень, а после чтения - обратно.
   vi0
 
3 - 17.12.18 - 16:47
написать самому и костылить - не предлагать
   Fragster
 
4 - 17.12.18 - 16:49
а чем тебе не нравится "Скидка от менеджера ПП - 5%"?
   Сияющий в темноте
 
5 - 17.12.18 - 16:55
Тогда никак
   vi0
 
6 - 17.12.18 - 17:20
(4) да это пример
просто бывают нечитабельные символы типа \u0000, которые провоцируют разные ошибки
   Fragster
 
7 - 17.12.18 - 17:51
(6) а зачем ты тогда пример такой неудачный приводишь? мне вот интересно, какой сервис выдает тебе результат с такими символами?
   palsergeich
 
8 - 17.12.18 - 17:55
(6)
1) Настроить систем логирования сервера.
2) Исключительны последовательности - хранить.
3) Перед преобразованием JSON тупым стр заменить удалять исключительные символы.
Количество необрабатываемых символов конечно и не велико.
   vi0
 
9 - 17.12.18 - 18:09
(8) третий вариант, конечно, тот еще гордиев узел
а про 1 и 2 можно поподробнее?
   palsergeich
 
10 - 17.12.18 - 19:34
(9) 1) Нужно выявить факт возникновения ошибочной ситуации на обмене.
2) Десериализация заворачивается в попытку исключение и текст сообщения и ошибки пишется в отдельный лог (Отдельный лог файл или БД), можно и в ЖР, но мне этот вариант не нравится.
3) По итогам работы проводится анализ ошибок - что именно привело к падению - данные символы заносятся в некий словарь исключений - что из JSON надо изъять для корректной работы.
4) СТРЗаменить работает очень быстро, как правило это служебные символы, случайно попавшие в сообщение. На практике пока видел таких всего 3.
 
 Рекламное место пустует
   palsergeich
 
11 - 17.12.18 - 19:37
а хранить юникод последовательности вместо символов - просто на ровном месте увеличить хранимые данные в 8 раз.
   Сияющий в темноте
 
12 - 17.12.18 - 21:53
Символ ноль в середине строки допустим только для Bstr,а в javascript такого быть не должно.
Опять же,в 1с ноль-это конец строки и будет проблема,но json тут каким боком виноват,если вы массивы байт в строку пишете?
   zva
 
13 - 18.12.18 - 05:37
(6) У меня так сделано:

СтрокаОтвета = УбратьНедопустимыеСимволы(HTTPОтвет.ПолучитьТелоКакСтроку());
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);


Функция УбратьНедопустимыеСимволы(ИсходнаяСтрока)
    
    Позиция = НайтиНедопустимыеСимволыXML(ИсходнаяСтрока);
    
    Пока Позиция <> 0 Цикл
        ИсходнаяСтрока = Лев(ИсходнаяСтрока, Позиция - 1) + Сред(ИсходнаяСтрока, Позиция + 1);
        Позиция = НайтиНедопустимыеСимволыXML(ИсходнаяСтрока);
    КонецЦикла; 
    
    Возврат ИсходнаяСтрока;
    
КонецФункции
   vi0
 
14 - 18.12.18 - 06:29
(10) ошибка происходит не при десериализации, а, например, при передачи строки с сервера на клиент

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует