Имя: Пароль:
1C
1С v8
Выгрузка в JSON добавляет лишние запятые
0 Gera1t
 
23.12.22
13:21
Здравствуйте, пытаюсь выгрузить ТЗ в JSON.
Код вот такой:

    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.ПроверятьСтруктуру = Ложь;

    ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON( , Символы.Таб);
    ЗаписьJSON.ОткрытьФайл(ИмяФайла, , , ПараметрыЗаписиJSON);
    
    ПараметрыСериализацииJSON = Новый НастройкиСериализацииJSON();
    
    //ЗаписьJSON.ЗаписатьНачалоМассива();
    
    
    Для Каждого Стр Из ТЗ Цикл
        
        
        
        //ЗаписьJSON.ЗаписатьНачалоОбъекта();
        //
        //ЗаписьJSON.ЗаписатьИмяСвойства("action");
        //ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Стр.action));
        //
        //ЗаписьJSON.ЗаписатьИмяСвойства("parameters");
        //ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Стр.parameters));
        //
        //ЗаписьJSON.ЗаписатьИмяСвойства("manager");
        //ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Стр.manager));
        //
        //ЗаписьJSON.ЗаписатьИмяСвойства("number_client_order");
        //ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Стр.number_client_order));        
        //
        //ЗаписьJSON.ЗаписатьИмяСвойства("order_1c_id");
        //ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Стр.order_1c_id));        
        //
        //
        //ЗаписьJSON.ЗаписатьКонецОбъекта();
        
        Запись = Новый Структура;
        
        Запись.Вставить("action",                 Стр.action);
        Запись.Вставить("parameters",             Стр.parameters);
        Запись.Вставить("manager",                 Стр.manager);
        Запись.Вставить("number_client_order",     Стр.number_client_order);
        Запись.Вставить("order_1c_id",             Стр.order_1c_id);
        
        Продукция = Новый Структура;
        Продукция.Вставить("product_type",     "Шкаф");
        Продукция.Вставить("price",         "1000");  
        Продукция.Вставить("count",         "1");
        
        Запись.Вставить("products",    Продукция);
        
        ЗаписатьJSON(ЗаписьJSON, Запись, ПараметрыСериализацииJSON);
        
    КонецЦикла;
    //ЗаписьJSON.ЗаписатьКонецМассива();    
    
    ЗаписьJSON.Закрыть();    

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

{
    "action": "1",
    "parameters": "2",
    "manager": "3",
    "number_client_order": "4",
    "order_1c_id": "5",
    "products": {
        "product_type": "Шкаф",
        "price": "1000",
        "count": "1"
    }
},
{,
"action": ,
"7",
"parameters": ,
"6",
"manager": ,
"5",
"number_client_order": ,
"4",
"order_1c_id": ,
"3",
"products": ,
{,
"product_type": ,
"Шкаф",
"price": ,
"1000",
"count": ,
"1"
}
}

Здесь видно, что первая запись из ТЗ выгружается красиво, а вот во второй присутствуют лишние запятые.
Подскажите пожалуйста как решить эту проблему.
Спасибо!
1 Gera1t
 
23.12.22
13:22
И да вот это
   ПараметрыСериализацииJSON = Новый НастройкиСериализацииJSON();
тоже не нужно здесь.
2 Kassern
 
23.12.22
13:25
(0) Посмотрите уже в сторону метода ЗаписатьJSON() и структур.
3 Kassern
 
23.12.22
13:25
А блин увидел, вы закоментили это дело)
4 Галахад
 
гуру
23.12.22
13:26
Зачем это "ЗаписатьJSON" в цикле?
5 Kassern
 
23.12.22
13:27
(4) Чтобы ловить косяк и создать тему на Мисте)
6 Gera1t
 
23.12.22
13:36
(4) Дело в том, что я не работал раньше с JSON, просто например если выгружаешь в dbf или в xml, то можно выгрузить все записи ТЗ в один файл.
7 Gera1t
 
23.12.22
13:37
Если я делаю не правильно, подскажите пожалуйста в двух словах как нужно.
8 arsik
 
гуру
23.12.22
13:45
9 Gera1t
 
23.12.22
13:49
Спасибо! Разобрался. В цикле добавляешь все в массив или структуру, а потом все это помещаешь в JSON.
10 Kassern
 
23.12.22
13:50
(9) именно так)
11 ДедМорроз
 
24.12.22
22:35
Можно и вручную,но только правильная последовательность команд.
Либо все в структуры и писать одним вызовом сериализатора
Или командами записи собирать вручную.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан