1С 8.3 Перевод строки из Unicode в JSON - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Перевод строки из Unicode в JSON

Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Примеры функций, которые корректно преобразуют в 1С 8.3 строку из Unicode в JSON.
Пример №1 Конвертация строки из Unicode в JSON в 1С 8.3:
//Функция читает полученный JSON декадируя текст юникод
Функция ДекодироватьUniCodeВJSON(стрВходящая)
   // стрВходящая содержит {"ok":"true","description":"\u0321\u0342\u0330\u0342\u0343\u0341\u033d"}

   Чтение = Новый ЧтениеJSON;
   Чтение.УстановитьСтроку(стрВходящая);
   ДанныеЛога = ПрочитатьJSON(Чтение);
   Чтение.Закрыть();

   // Вариант 1 используя перебор структуры и вывод в текстовую переменную
   Текст = "";
   Для Каждого Элемент Из ДанныеЛога Цикл
       //добавим разделитель после предыдущего значения
       Текст = Текст + ?(НЕ ПустаяСтрока(Текст), Символы.ПС, "");
       //добавим представление ключа и значения:
       Текст = Текст + Элемент.Ключ + " = " + Элемент.Значение;
   КонецЦикла;
   Возврат Текст; //Вернет   ok = true   description = Статус заказа изменен

   // Вариант 2 мспользуя ЗаписьJSON
   Запись = Новый ЗаписьJSON;
   Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет));
   ЗаписатьJSON(Запись, ДанныеЛога,);

   Возврат Запись.Закрыть();  // Вернет JSON  {"ok":"true","description":"Статус заказа изменен"}

КонецФункции
Пример №2 Конвертация строки из Unicode в JSON в 1С 8.3:
//Параметры: Строка в Юникод (обязательный) Тип: Строка. Исходная строка.
//Возвращаемое значение: Тип: Строка. Строка обработанных символов.
//Описание: Возвращает преобразованную строку из формата Unicod.
//Автор: Александр Кияница (treedo). Адаптировано под русский алфавит автором сайта
Функция ПереобразоватьЮникод(Строка)

   ГотововаяСтрока = "" ;

   МасАлф = Новый Массив(66) ;

   МасАлф[0]="А";   МасАлф[1]="Б";  МасАлф[2]="В";  МасАлф[3]="Г";  МасАлф[4]="Д";  МасАлф[5]="Е";
   МасАлф[6]="Ё";   МасАлф[7]="Ж";  МасАлф[8]="З";  МасАлф[9]="И";  МасАлф[10]="Й"; МасАлф[11]="К";
   МасАлф[12]="Л";  МасАлф[13]="М"; МасАлф[14]="Н"; МасАлф[15]="О"; МасАлф[16]="П"; МасАлф[17]="Р";
   МасАлф[18]="С";  МасАлф[19]="Т"; МасАлф[20]="У"; МасАлф[21]="Ф"; МасАлф[22]="Х"; МасАлф[23]="Ц";
   МасАлф[24]="Ч";  МасАлф[25]="Ш"; МасАлф[26]="Щ"; МасАлф[27]="Ъ"; МасАлф[28]="Ы"; МасАлф[29]="Ь";
   МасАлф[30]="Э";  МасАлф[31]="Ю"; МасАлф[32]="Я";


   МасАлф[33]="а";  МасАлф[34]="б"; МасАлф[35]="в"; МасАлф[36]="г"; МасАлф[37]="д"; МасАлф[38]="е";
   МасАлф[39]="ё";  МасАлф[40]="ж"; МасАлф[41]="з"; МасАлф[42]="и"; МасАлф[43]="й"; МасАлф[44]="к";
   МасАлф[45]="л";  МасАлф[46]="м"; МасАлф[47]="н"; МасАлф[48]="о"; МасАлф[49]="п"; МасАлф[50]="р";
   МасАлф[51]="с";  МасАлф[52]="т"; МасАлф[53]="у"; МасАлф[54]="ф"; МасАлф[55]="х"; МасАлф[56]="ц";
   МасАлф[57]="ч";  МасАлф[58]="ш"; МасАлф[59]="щ"; МасАлф[60]="ъ"; МасАлф[61]="ы"; МасАлф[62]="ь";
   МасАлф[63]="э";  МасАлф[31]="ю"; МасАлф[65]="я";

   МасКод = Новый Массив(66) ;

   МасКод[0]="0410";   МасКод[1]="0411";  МасКод[2]="0412";  МасКод[3]="0413";  МасКод[4]="0414";  МасКод[5]="0415";
   МасКод[6]="0401";   МасКод[7]="0416";  МасКод[8]="0417";  МасКод[9]="0418";  МасКод[10]="0419"; МасКод[11]="041A";
   МасКод[12]="041B";  МасКод[13]="041C"; МасКод[14]="041D"; МасКод[15]="041E"; МасКод[16]="041F"; МасКод[17]="0420";
   МасКод[18]="0421";  МасКод[19]="0422"; МасКод[20]="0423"; МасКод[21]="0424"; МасКод[22]="0425"; МасКод[23]="0426";
   МасКод[24]="0427";  МасКод[25]="0428"; МасКод[26]="0429"; МасКод[27]="042A"; МасКод[28]="042B"; МасКод[29]="042C";
   МасКод[30]="042D";  МасКод[31]="042E"; МасКод[32]="042F";

   МасКод[33]="0430";  МасКод[34]="0431"; МасКод[35]="0432"; МасКод[36]="0433"; МасКод[37]="0434"; МасКод[38]="0435";
   МасКод[39]="0451";  МасКод[40]="0436"; МасКод[41]="0437"; МасКод[42]="0438"; МасКод[43]="0439"; МасКод[44]="043A";
   МасКод[45]="043B";  МасКод[46]="043C"; МасКод[47]="043D"; МасКод[48]="043E"; МасКод[49]="043F"; МасКод[50]="0440";
   МасКод[51]="0441";  МасКод[52]="0442"; МасКод[53]="0443"; МасКод[54]="0444"; МасКод[55]="0445"; МасКод[56]="0446";
   МасКод[57]="0447";  МасКод[58]="0448"; МасКод[59]="0449"; МасКод[60]="044A"; МасКод[61]="044B"; МасКод[62]="044C";
   МасКод[63]="044D";  МасКод[31]="044E; МасКод[65]="044F";

   ВремСтрока = "" ;
   Для Счетчик = 1 По СтрДлина(Строка) Цикл
       Если Лев(Строка, 1) = "\" Тогда
           Если Лев(Строка, 2) = "\u" Тогда
               ВремСтрока = Прав(Лев(Строка, 6),4) ;
               Если МасКод.Найти(ВремСтрока) = Неопределено Тогда
                   СтрокаЗамены = Прав(ВремСтрока, 1) ;
                   ВремСтрока = СтрЗаменить(ВремСтрока,СтрокаЗамены,ТРег(СтрокаЗамены));
                   Если МасКод.Найти(ВремСтрока) = Неопределено Тогда
                       Сообщить("Код символа не найден: " + ВремСтрока) ;
                   Иначе
                       ГотововаяСтрока = ГотововаяСтрока + МасАлф[МасКод.Найти(ВремСтрока)] ;
                   КонецЕсли;
               Иначе
                   ГотововаяСтрока = ГотововаяСтрока + МасАлф[МасКод.Найти(ВремСтрока)] ;
               КонецЕсли;

               Строка = Прав(Строка, (СтрДлина(Строка)-6)) ;
           Иначе
               Строка = Прав(Строка, (СтрДлина(Строка)-2)) ;
           КонецЕсли;
       Иначе
           ГотововаяСтрока = ГотововаяСтрока + Лев(Строка, 1) ;
           Строка = Прав(Строка, (СтрДлина(Строка)-1)) ;
       КонецЕсли;
   КонецЦикла;

   Возврат ГотововаяСтрока ;

КонецФункции

0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 07.05.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому