Преобразование соответствия в структуру

При работе с JSON в 1С могут возникнуть коллизии, когда невозможно загрузить строку JSON в структуру 1С, из-за наличия ключей не соответствующих правилам назначения имени ключу. Это ограничение структуры 1С.

В этом случае можно загрузит строку JSON в соответствие, но с соответствием работать не совсем удобно.
Выход — загружаем в соответствие и конвертируем в структуру используя нижеприведенный код:

Функция ПолучитьСтруктуруИзСоответствия(ЗначВход) Экспорт
 
 СтруктураВозврат=Новый Структура;
 
 Если ТипЗнч(ЗначВход)=Тип("Соответствие") Тогда
  
  ФлагОщибка=Ложь;
  
  Для Каждого р Из ЗначВход Цикл
   Попытка
    СтруктураВозврат.Вставить(р.Ключ,ПолучитьСтруктуруИзСоответствия(р.Значение));
   Исключение
    ФлагОщибка=Истина;
    Прервать;
   КонецПопытки;
  КонецЦикла;
  
   Если ФлагОщибка Тогда // пришел ключь который не возможно поместить в структуру
   СтруктураВозврат = Новый Массив;
   Для Каждого р Из ЗначВход Цикл
    ДопСтруктура=Новый Структура;
    ДопСтруктура.Вставить("Ключ",р.Ключ);
    ДопСтруктура.Вставить("Значение",ПолучитьСтруктуруИзСоответствия(р.Значение));
    СтруктураВозврат.Добавить(ДопСтруктура);
   КонецЦикла;
  КонецЕсли;
  
  Возврат СтруктураВозврат; 
  
 ИначеЕсли ТипЗнч(ЗначВход)=Тип("Массив") Тогда
  
  НовыйМассив=Новый Массив;
  Для Каждого ЭлМ Из ЗначВход Цикл
   НовыйМассив.Добавить(ПолучитьСтруктуруИзСоответствия(ЭлМ));
  КонецЦикла;
  Возврат НовыйМассив;
  
 КонецЕсли;
 
 Возврат ЗначВход; 
 
КонецФункции


Для поиска где находиться ошибка в строке JSON можно использовать вот эту обработку http://infostart.ru/public/404847/. В последних версиях 1С предусмотрен вывод ошибки с указанием причины.

Добавить комментарий