Каталог решений - Простой способ преобразовать UNICODE в строку или в структуру

Простой способ преобразовать UNICODE в строку или в структуру

Простой способ преобразовать UNICODE в строку или в структуру

В наличии

Первая функция получает Строку, которая содержит строчки вида «Ключ=Значение».
Вторая функция получает Структуру.

Категория:

Описание

При интеграции со сторонними сервисами часто требуется перевести крокозямблы, которые приходят в ответ от REST API методов, в человеческие буквы 🙂

Мне эта короткая функция сильно упрощает жизнь.

Учитывайте, что функция игнорирует Значения с типами «НачалоОбъекта» и «КонецОбъекта»,  хотя мне не разу это не пригодилось.

Функция ЮникодВСтроку(ИсходнаяСтрока) Экспорт
    Ответ="";
	Чтение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.ТекущееЗначение); 
		КонецЕсли; 
	КонецЦикла;
	ОтветСтруктура=Новый Структура;
	Для Счетчик = 1 По СтрЧислоСтрок(Ответ) Цикл
		ТекСтрока = СтрПолучитьСтроку(Ответ, Счетчик);
		Если СокрЛП(ТекСтрока)<>"" Тогда
			Ключ=Лев(ТекСтрока,СтрНайти(ТекСтрока,"=")-1);
			Значение=СтрЗаменить(ТекСтрока,Ключ+"=","");
			Если Ключ<>Значение Тогда
				ОтветСтруктура.Вставить(Ключ,Значение);
			Иначе
				ОтветСтруктура.Вставить(Ключ,"");
			КонецЕсли; 
		КонецЕсли; 
	КонецЦикла;
	Возврат ОтветСтруктура;
КонецФункции

has been added to your cart:
Оформление заказа