1С 8.3 Перевод строки из Unicode в строку или структуру
Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Перейти в раздел примеры кода 1С 8.3:
Примеры функций, которые корректно преобразуют в 1С 8.3 строку из Unicode в строку или структуру. И из строки в юникод.
Пример №1 Конвертация строки из Unicode в строку в 1С 8.3:
Функция ДекодироватьUniCodeВСтроку(ВходящаяСтрока) Экспорт
Результат="";
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ВходящаяСтрока);
Пока ЧтениеJSON.Прочитать() Цикл
Если НЕ(ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива) Тогда
Результат=Результат+?(НЕ Строка(ЧтениеJSON.ТекущееЗначение)=""
И ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.ИмяСвойства
,Строка(ЧтениеJSON.ТекущееЗначение)+"="
,Строка(ЧтениеJSON.ТекущееЗначение)+Символы.ВК);
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива Тогда
Результат=Результат+Символы.ВК+"["+Символы.ВК;
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива Тогда
Результат=Результат+"]"+Символы.ВК;
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта Тогда
Результат=Результат+Символы.ВК+"{"+Символы.ВК;
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта Тогда
Результат=Результат+"}"+Символы.ВК;
Иначе
Результат=Результат+Символы.ВК;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Результат="";
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ВходящаяСтрока);
Пока ЧтениеJSON.Прочитать() Цикл
Если НЕ(ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива) Тогда
Результат=Результат+?(НЕ Строка(ЧтениеJSON.ТекущееЗначение)=""
И ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.ИмяСвойства
,Строка(ЧтениеJSON.ТекущееЗначение)+"="
,Строка(ЧтениеJSON.ТекущееЗначение)+Символы.ВК);
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива Тогда
Результат=Результат+Символы.ВК+"["+Символы.ВК;
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива Тогда
Результат=Результат+"]"+Символы.ВК;
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта Тогда
Результат=Результат+Символы.ВК+"{"+Символы.ВК;
ИначеЕсли ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта Тогда
Результат=Результат+"}"+Символы.ВК;
Иначе
Результат=Результат+Символы.ВК;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Пример №2 Конвертация строки из Unicode в структуру в 1С 8.3:
Функция ДекодироватьUniCodeВСтруктуру(ВходящаяСтрока) Экспорт
Результат="";
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ВходящаяСтрока);
Пока ЧтениеJSON.Прочитать() Цикл
Если НЕ(ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива) Тогда
Результат = Результат+?(НЕ Строка(ЧтениеJSON.ТекущееЗначение)=""
И ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.ИмяСвойства,Символы.ВК+ЧтениеJSON.ТекущееЗначение+"="
,ЧтениеJSON.ТекущееЗначение);
КонецЕсли;
КонецЦикла;
СтрРезультат = Новый Структура;
Для А = 1 По СтрЧислоСтрок(Результат) Цикл
ТекСтрока = СтрПолучитьСтроку(Результат, А);
Если СокрЛП(ТекСтрока)<>"" Тогда
Ключ = Лев(ТекСтрока,СтрНайти(ТекСтрока,"=")-1);
Значение = СтрЗаменить(ТекСтрока,Ключ+"=","");
Если Ключ<>Значение Тогда
СтрРезультат.Вставить(Ключ,Значение);
Иначе
СтрРезультат.Вставить(Ключ,"");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат СтрРезультат;
КонецФункции
Результат="";
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ВходящаяСтрока);
Пока ЧтениеJSON.Прочитать() Цикл
Если НЕ(ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива
Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива) Тогда
Результат = Результат+?(НЕ Строка(ЧтениеJSON.ТекущееЗначение)=""
И ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.ИмяСвойства,Символы.ВК+ЧтениеJSON.ТекущееЗначение+"="
,ЧтениеJSON.ТекущееЗначение);
КонецЕсли;
КонецЦикла;
СтрРезультат = Новый Структура;
Для А = 1 По СтрЧислоСтрок(Результат) Цикл
ТекСтрока = СтрПолучитьСтроку(Результат, А);
Если СокрЛП(ТекСтрока)<>"" Тогда
Ключ = Лев(ТекСтрока,СтрНайти(ТекСтрока,"=")-1);
Значение = СтрЗаменить(ТекСтрока,Ключ+"=","");
Если Ключ<>Значение Тогда
СтрРезультат.Вставить(Ключ,Значение);
Иначе
СтрРезультат.Вставить(Ключ,"");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат СтрРезультат;
КонецФункции
Пример №3 Конвертация из строки в Unicode в 1С 8.3 (автор: Никитa Федькин):
Функция ДекодироватьСтрокуВUniCode(ВходящаяСтрока) Экспорт
ЗаписьJSON = Новый ЗаписьJSON;
ИспользоватьДвойныеКавычки = Ложь;
ЭкранироватьОдинарныеКавычки = Ложь;
ЭкранироватьСлэш = Ложь;
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(
,
,
ИспользоватьДвойныеКавычки,
ЭкранированиеСимволовJSON.NotASCIISymbols,
,
,
,
ЭкранироватьОдинарныеКавычки,
ЭкранироватьСлэш
);
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
ЗаписьJSON.ЗаписатьЗначение(ВходящаяСтрока);
Результат = ЗаписьJSON.Закрыть();
// Раскомментировать, если используется в OneScript - в 1.0.16 он добавляет одинарные кавычки вокруг строки.
//Выход = Сред(Выход, 2, СтрДлина(Выход) - 2);
Возврат Результат;
КонецФункции
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник