Всех приветствую!
Прилагаю несколько функций, которые могут пригодиться другим разработчикам 1С для разбора JSON-объектов и конвертации их в соответствующие структуры:
1. Создаем объект ЧтениеJSON на основе текста объекта:
Функция фПрочитатьJSON(ТекстJSON) Экспорт
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТекстJSON);
Структура = ЗаполнитьСтруктуруИзОтветаJSON(Чтение);
Чтение.Закрыть();
Возврат Структура;
КонецФункции
2. Рекурсивная процедура для возврата объекта типа Структура
Функция ЗаполнитьСтруктуруИзОтветаJSON(Знач Чтение) Экспорт
Результат = Новый Структура;
ПоследнееИмяРеквизита = Неопределено;
Пока Чтение.Прочитать() Цикл
Тип = Чтение.ТипТекущегоЗначения;
Если Тип = ТипЗначенияJSON.НачалоОбъекта И ПоследнееИмяРеквизита<>Неопределено Тогда
Результат[ПоследнееИмяРеквизита] = ЗаполнитьСтруктуруИзОтветаJSON(Чтение);
ИначеЕсли Тип = ТипЗначенияJSON.КонецОбъекта Тогда
Возврат Результат;
ПоследнееИмяРеквизита = Неопределено;
ИначеЕсли Тип = ТипЗначенияJSON.ИмяСвойства Тогда
Результат.Вставить(Чтение.ТекущееЗначение, Неопределено);
ПоследнееИмяРеквизита = Чтение.ТекущееЗначение;
ИначеЕсли Тип = ТипЗначенияJSON.Булево или Тип = ТипЗначенияJSON.Строка
или Тип = ТипЗначенияJSON.Число или Тип = ТипЗначенияJSON.Null Тогда
Результат[ПоследнееИмяРеквизита] = Чтение.ТекущееЗначение;
ИначеЕсли Тип = ТипЗначенияJSON.НачалоМассива Тогда
Результат[ПоследнееИмяРеквизита] = ЗаполнитьМассивИзОтветаJSON(Чтение);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
3. В случае использования массивов в JSON-объекте используем третью процедуру
Функция ЗаполнитьМассивИзОтветаJSON(Знач Чтение)
Результат = Новый Массив;
Пока Чтение.Прочитать() Цикл
Тип = Чтение.ТипТекущегоЗначения;
Если Тип = ТипЗначенияJSON.НачалоОбъекта Тогда
Результат.Добавить(ЗаполнитьСтруктуруИзОтветаJSON(Чтение));
ИначеЕсли Тип = ТипЗначенияJSON.КонецМассива Тогда
Возврат Результат;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Вот и все! Всем хорошего времени суток!