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