Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Сериализация в JSON

Сериализация в JSON
Я
   kkar
 
22.01.21 - 12:57
Добрый день! Стоит задача сериализовать в JSON структуру следующего вида:
Структура = Новый Структура;
Структура.Вставить("НомерСообщения", 1);
Структура.Вставить("МассивДанных", МассивСсылок);

МассивСсылок - массив с ссылками (справочники, документы).

При вызове СериализаторXDTO.ЗаписатьJSON(Запись, Структура, НазначениеТипаXML.Явное)

файл json имеет вид:

{
    "#value":[
        {
            "name":{
                "#type":"jxs:string",
                "#value":"НомерСообщения"
            },
            "Value":{
                "#type":"jxs:decimal",
                "#value":1
            }
        },
        {
            "name":{
                "#type":"jxs:string",
                "#value":"МассивДанных"
            },
            "Value":{здесь пошел массив объектов json}
        }
    ]
}

То есть структура преобразовалась в массив

А хочется вид такой:
{
"НомерСообщения": 1,
"МассивДанных": массив объектов json
}

Как привести к желаемому виду? Чтобы потом и десериализация прошла?
   acht
 
1 - 22.01.21 - 13:00
(0) >"МассивДанных": массив объектов json
А распиши, ну ради интереса, как по-твоему "нормально" должен выглядеть массив ссылок в json? Ну, чтобы потом и десериализация прошла.
   d4rkmesa
 
2 - 22.01.21 - 13:06
(0) Попробуй функцию ЗаписатьJSON глобального контекста, а не сериализатора. Примерно: ЗаписатьJSON(Запись, Структура) .
   kkar
 
3 - 22.01.21 - 13:12
(1) {
    "#type":"jv8:Array",
    "#value":[
        {
            "#type":"jcfg:CatalogObject.Справочник1",
            "#value":{

                "Ref":"2db3997e-48d3-414b-85d6-e29aa928a9b7",
                "DeletionMark":false,
                "Owner":{
                    "#type":"jcfg:CatalogRef.Владелец",

                    "#value":"52445859-cde1-4ff7-9681-9631f5ef5c8d"
                },
                "Code":"А00009555",
                "Description":"UP-9T-2500-350053101",
                "ТипОборудования":"7575e214-5bcc-4cc7-8b4b-d0286250a5be"
            }
        },
     и т.д.
      ]
     }

Десериализация в принципе уже проходит в текущем формате
   kkar
 
4 - 22.01.21 - 13:13
(2) ЗаписатьJSON глобального контекста не сериализует массив ссылок, только простые типы
   d4rkmesa
 
5 - 22.01.21 - 13:21
(4) При желании можно, но вы же хотите не массив ссылок(гуидов, грубо говоря), а массив объектов.
   kkar
 
6 - 22.01.21 - 13:22
(5) да, верно, массив объектов нужен
   d4rkmesa
 
7 - 22.01.21 - 13:22
Хотя, в функцию преобразования можно засунуть многое, как минимум, формируя сериализуемые коллекции. Но десериализовывать тоже придется вручную.
   kkar
 
8 - 22.01.21 - 13:27
(7) не хотелось бы усложнять себе жизнь=)
   acht
 
9 - 22.01.21 - 13:48
(8) Так а чем тогда текущая схема не устраивает?
   kkar
 
10 - 22.01.21 - 13:54
(9) принимающей стороне не нравится, что структура превратилась в массив json. Им удобнее было бы обрабатывать объекты json.
   acht
 
11 - 22.01.21 - 14:01
(10) Ну слепи им строчку JSON руками, чо.

Определись: "не хотелось бы усложнять себе жизнь" или "принимающей стороне не нравится"
   kkar
 
12 - 22.01.21 - 14:18
(11) Ну раз нет других вариантов, то что ж поделать

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.