(1) я пока нашёл временный выход
itemProblemTypes сделал типом строка и вставляю туда константу "здесь будет массив" к примеру.
при сериализации получаю json-строку: "itemProblemTypes" : "здесь будет массив" а потом подменяю её на нужную с помощью функции стрЗаменить().
в качестве костыля работает. но это не спортивно.
прошу откликнуться тех, кто подружил XDTO с объектом типа Массив-json
Ну вроде все, мы разобрались с примитивными типами. Но! В JSON есть еще такое понятие как массив. Обработать мы его можем, но с кучей ограничений. Мы не можем просто взять и передать поле в XDTO-пакет
(5) присоединяюсь к оратору. Нужно показать весь объект XDTO, как именно там это свойство в JSON приходит, видимо оно должно храниться строкой. Что-то я не понял о чем задача.
(6) задача состоит в том, что при десериализации свойства:
"itemProblemTypes": [ "Not found","Found but not" ] с помощью механизмов XDTO происходит ошибка из-за того, что я никак не могу подобрать тип этого свойства в описании объекта XDTO.
и именно это свойство является json-массивом.
но у поставщика требование по API именно должен быть массив-json, а не массив объектов.
а у постовщика есть требование использовать xdto?
xtdo - XML Data Transfer Objects
То что можно использовать json, еще не означает, что можно нарушать структуру xdto.
ПрочитатьJSON должен отрабатывать нормально. Полученные данные уже используйте для заполнения необходимых сущностей.
Функция ОбъектXDTOВСтруктуру(ОбъектXDTO, ПараметрыПреобразования = Неопределено) Экспорт
Структура = Новый Структура;
ТипОбъектаXDTO = ОбъектXDTO.Тип();
Для Каждого Свойство Из ОбъектXDTO.Свойства() Цикл
ИмяСвойства = Свойство.Имя;
ЗначениеСвойства = ОбъектXDTO[ИмяСвойства];
Если ТипЗнч(ЗначениеСвойства) = Тип("ОбъектXDTO") Тогда
Структура.Вставить(ИмяСвойства, ОбъектXDTOВСтруктуру(ЗначениеСвойства, ПараметрыПреобразования));
ИначеЕсли ТипЗнч(ЗначениеСвойства) = Тип("СписокXDTO") Тогда
Структура.Вставить(ИмяСвойства, Новый Массив);
Для Индекс = 0 По ЗначениеСвойства.Количество() - 1 Цикл
ЭлементСписка = ЗначениеСвойства.Получить(Индекс);
Если ТипЗнч(ЭлементСписка) = Тип("ОбъектXDTO") Тогда
Структура[ИмяСвойства].Добавить(ОбъектXDTOВСтруктуру(ЭлементСписка, ПараметрыПреобразования));
Иначе
Структура[ИмяСвойства].Добавить(ЭлементСписка);
КонецЕсли;
КонецЦикла;
Иначе
Структура.Вставить(ИмяСвойства, ЗначениеСвойства);
Если ПараметрыПреобразования <> Неопределено
И ПараметрыПреобразования.НайтиИдентификаторы
И Свойство.Тип = ПараметрыПреобразования.ТипUUID Тогда
РезультатПоиска = ПараметрыПреобразования.ТипыИдентификаторов[ТипОбъектаXDTO];
Если РезультатПоиска <> Неопределено
И РезультатПоиска.ИмяПоля = ИмяСвойства Тогда
ПараметрыПреобразования.Идентификаторы[РезультатПоиска.ИмяТаблицы].Вставить(ЗначениеСвойства, РезультатПоиска.ПустоеЗначение);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Структура;
КонецФункции