Имя: Пароль:
1C
1С v8
Сериализация в JSON
, ,
0 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
}

Как привести к желаемому виду? Чтобы потом и десериализация прошла?
1 acht
 
22.01.21
13:00
(0) >"МассивДанных": массив объектов json
А распиши, ну ради интереса, как по-твоему "нормально" должен выглядеть массив ссылок в json? Ну, чтобы потом и десериализация прошла.
2 d4rkmesa
 
22.01.21
13:06
(0) Попробуй функцию ЗаписатьJSON глобального контекста, а не сериализатора. Примерно: ЗаписатьJSON(Запись, Структура) .
3 kkar
 
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-3500 № 53101",
                "ТипОборудования":"7575e214-5bcc-4cc7-8b4b-d0286250a5be"
            }
        },
     и т.д.
      ]
     }

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

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