Преобразование ЧтениеJSON в Соответствие

nytlenc 33 2 3

Преобразует ЧтениеJSON любой глубины в Соответствие. Пример вызова: //JSONТекст - исходный текст в формате JSON Результат = Неопределено; ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(JSONТекст); ОбработатьJSON(ЧтениеJSON, Результат); //Здесь на выходе из процедуры Результат = Соответствие;

&НаСервере
Процедура ОбработатьJSON(ЧтениеJSON, Результат)
	
	ИмяСвойства = Неопределено;
	
	Пока ЧтениеJSON.Прочитать() Цикл
		TипJSON = ЧтениеJSON.ТипТекущегоЗначения;
		
		Если TипJSON = ТипЗначенияJSON.НачалоОбъекта 
			ИЛИ TипJSON = ТипЗначенияJSON.НачалоМассива Тогда
			НовыйОбъект = ?(TипJSON = ТипЗначенияJSON.НачалоОбъекта, Новый Соответствие, Новый Массив);
			
			Если ТипЗнч(Результат) = Тип("Массив") Тогда
				Результат.Добавить(НовыйОбъект);
			ИначеЕсли ТипЗнч(Результат) = Тип("Соответствие") И ЗначениеЗаполнено(ИмяСвойства) Тогда
				Результат.Вставить(ИмяСвойства, НовыйОбъект);
			КонецЕсли;
			
			ОбработатьJSON(ЧтениеJSON, НовыйОбъект);
			
			Если Результат = Неопределено Тогда
				Результат = НовыйОбъект;
			КонецЕсли;
		ИначеЕсли TипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
			ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
		ИначеЕсли TипJSON = ТипЗначенияJSON.Число 
			ИЛИ TипJSON = ТипЗначенияJSON.Строка 
			ИЛИ TипJSON = ТипЗначенияJSON.Булево 
			ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
			Если ТипЗнч(Результат) = Тип("Массив") Тогда
				Результат.Добавить(ЧтениеJSON.ТекущееЗначение);
			ИначеЕсли ТипЗнч(Результат) = Тип("Соответствие") Тогда
				Результат.Вставить(ИмяСвойства, ЧтениеJSON.ТекущееЗначение);
			КонецЕсли;
		Иначе
			Возврат;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
0

См. также

ДанныеXDTOИзДанныхИБ (БСП)

Чтение файла XML в объект XDTO по схеме *.xsd

Чтение параметров http-запроса в формате x-www-form-urlencoded в соответствие

ОбъектXDTOИзДанныхXDTO (БСП)

ПрочитатьСобытияЖурналаРегистрации (БСП)

Функция восстановления значения при чтении JSON (ЧтениеJSON)

Чтение XML через DOM

Запись Чтение XML 2

ДополнительныеПравилаПреобразования (БСП)

Модератору