Имя: Пароль:
1C
 
Прочитать JSON формат
0 antihacker
 
22.06.18
14:32
Всем привет !

Как прочитать такой JSON формат ?


"ДанныеДокумента": [
{
"НомДокКлиента": "4155-000000001",
"ДатаДокКлиента": "2018-05-05T13:18:11",
"ВидДокумента": "УПФПР",
"ГодУчета": "2018-12-31T23:59:59",
"КодУчреждения": "2530"
}
],
"ТабЧастьДокумента": [
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
}
]
},
{
"ДанныеДокумента": [
{
"НомДокКлиента": "4155-000000001",
"ДатаДокКлиента": "2018-05-05T14:16:36",
"ВидДокумента": "ИПФПР",
"ГодУчета": "",
"КодУчреждения": "2530"
}
],
"ТабЧастьДокумента": [
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
}
]
}
]
1 Волшебник
 
22.06.18
14:33
кнопочку Я нажми справа от заголовка темы
2 Cyberhawk
 
22.06.18
14:33
ПрочитатьЖСОН
3 lodger
 
22.06.18
14:34
новый ЧтениеЖСОН.
4 antihacker
 
22.06.18
14:37
Пробовал вот так

        Ответ = Новый HTTPСервисОтвет(200);
    
        main_data  = Запрос.ПараметрыЗапроса.Получить("main_data");
        Id_user = Запрос.ПараметрыЗапроса.Получить("id_user");
                
        //Данные документа
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(main_data);
                                              
        ДанныеДокументаJSON =ПрочитатьJSON(ЧтениеJSON);
        ЧтениеJSON.Закрыть();

        Для Каждого ТекДанный2 Из ДанныеДокументаJSON Цикл
        Для Каждого ТекДанный Из ТекДанный2 Цикл

            НайденнаяОрганизация = Справочники.Организации.НайтиПоРеквизиту("КодУчреждения",СокрЛП(ТекДанный.КодУчреждения));
            
            Если НайденнаяОрганизация <> Справочники.Организации.ПустаяСсылка() Тогда
                
                 //Начинаем создовать документы
                 Если ТекДанный.ВидДокумента = "УПФПР" Тогда
                       НовыйДокументРасхода = Документы.УтвержденныйПланФинансированияПоРасходам.СоздатьДокумент();
                 ИначеЕсли ТекДанный.ВидДокумента = "ИПФПР" Тогда       
                      НовыйДокументРасхода = Документы.ИзмененияПланаФинансированияПоРасходам.СоздатьДокумент();
                 КонецЕсли;
                  
                 НовыйДокументРасхода.Дата = ТекущаяДата();
                 НовыйДокументРасхода.Организация = НайденнаяОрганизация;
                
                 НовыйДокументРасхода.НомДокКлиента  = ТекДанный.НомДокКлиента;
                 НовыйДокументРасхода.ДатаДокКлиента = ТекДанный.ДатаДокКлиента;
                
                 НовыйДокументРасхода.Записать();
                 Ответ.УстановитьТелоИзСтроки(НайденнаяОрганизация.Наименование, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
            Иначе
                
                Ответ.УстановитьТелоИзСтроки("Учреждение с кодом - "+ТекДанный.КодУчреждения+" не найден", КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
                
            КонецЕсли;
            
        КонецЦикла;

Пишет -

Ошибка при вызове метода контекста (ПрочитатьJSON)]]
5 Юрий Лазаренко
 
22.06.18
14:37
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(<ПеременнаяСJSON>);
СтруктураJSON = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
6 Юрий Лазаренко
 
22.06.18
14:43
(4) JSON у тебя невалидный, поэтому и не читает
7 Юрий Лазаренко
 
22.06.18
14:48
Вот валидный:

[
{
"ДанныеДокумента": [
{
"НомДокКлиента": "4155-000000001",
"ДатаДокКлиента": "2018-05-05T13:18:11",
"ВидДокумента": "УПФПР",
"ГодУчета": "2018-12-31T23:59:59",
"КодУчреждения": "2530"
}
],
"ТабЧастьДокумента": [
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
}
]
}
,
{
"ДанныеДокумента": [
{
"НомДокКлиента": "4155-000000001",
"ДатаДокКлиента": "2018-05-05T13:18:11",
"ВидДокумента": "УПФПР",
"ГодУчета": "2018-12-31T23:59:59",
"КодУчреждения": "2530"
}
],
"ТабЧастьДокумента": [
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
},
{
"Столбец1": 1,
"Столбец2": 2,
"Столбец3": 3,
"Столбец4": 4,
"Столбец5": 5
}
]
}
]
8 antihacker
 
22.06.18
14:55
Создаю я его вот так.
&НаСервере
Функция ПодготовитьДанныедляОотправки()
    
    СписокВсехДоковМСВ = Новый Массив;
    
    //Цикл по документам
    Для Каждого ТекДок Из Объект.ДокументыДляСинхронизации Цикл        
        
        ВозвратРезультатаСКА = Новый Структура();
        
        //Основные данные документа
        ОсновныеДанныеДокументаМСВ = Новый Массив;
    
        ДанныеДокументаСКА = Новый Структура();  
        
        ДанныеДокументаСКА.Вставить("НомДокКлиента" ,ТекДок.Документ.Номер);
        ДанныеДокументаСКА.Вставить("ДатаДокКлиента",ТекДок.Документ.Дата);
        
        Если ТипЗнч(ТекДок.Документ) = Тип("ДокументСсылка.УтвержденныйПланФинансированияПоРасходам") Тогда
             ДанныеДокументаСКА.Вставить("ВидДокумента"  ,"УПФПР");
             ДанныеДокументаСКА.Вставить("ГодУчета"      ,ТекДок.Документ.ГодУчета);
        ИначеЕсли ТипЗнч(ТекДок.Документ) = Тип("ДокументСсылка.ИзмененияПланаФинансированияПоРасходам") Тогда
             ДанныеДокументаСКА.Вставить("ВидДокумента"  ,"ИПФПР");
             ДанныеДокументаСКА.Вставить("ГодУчета"      ,"");            
        КонецЕсли;
        
        ДанныеДокументаСКА.Вставить("КодУчреждения" ,СокрЛП(ТекДок.Документ.Организация.КодУчреждения));
        
        ОсновныеДанныеДокументаМСВ.Добавить(ДанныеДокументаСКА);
    
        //Табличная часть документа
        МассивСписокПКП = Новый Массив;
    

        Для Шаг = 1 По 3 Цикл    
        
            МассивСписокПКП.Добавить(Новый Структура("Столбец1, Столбец2, Столбец3, Столбец4,Столбец5",1,2,3,4,5));
        
        КонецЦикла;
              
        
        ВозвратРезультатаСКА.Вставить("ДанныеДокумента"  ,ОсновныеДанныеДокументаМСВ);
        ВозвратРезультатаСКА.Вставить("ТабЧастьДокумента",МассивСписокПКП);
        
        СписокВсехДоковМСВ.Добавить(ВозвратРезультатаСКА);

    Конеццикла;

        //Конвертируем в JSON    
        ЗаписьJSON = Новый ЗаписьJSON;
        ЗаписьJSON.УстановитьСтроку();

        ЗаписатьJSON(ЗаписьJSON, СписокВсехДоковМСВ);
    
        СписокВсехДоковМ = ЗаписьJSON.Закрыть();

    Возврат СписокВсехДоковМ;
    
КонецФункции

Где ошибка ?
9 dezss
 
22.06.18
14:57
Формат даты тебе еще надо передавать в ПрочитатьJSON
И имена параметров, хранящих даты.

а вообще странно выглядит твой JSON.
(7) + ага...тож сделал)
10 antihacker
 
22.06.18
14:58
И есть ли минус в том что бы, передовать большие JSON строки ?
Мне пришлось изменить в ISS параметр  maximum query string на 20 000
11 dezss
 
22.06.18
15:00
(10) у мну иногда передаются файлы по 16 мегабайт и ничего.
12 antihacker
 
22.06.18
15:31
Вроде читает. То есть формат правильный.Но ругается Поле объекта не обнаружено (КодУчреждения)]]

Видимо не правильно достаю внутренние элементы JSOn -а
13 dezss
 
22.06.18
15:53
(12) отладчик в руки и смотри
14 antihacker
 
22.06.18
16:01
ОТправляю нормально. А вот ни как не могу настроить отладчик для HTTP сервис. Не ловит зараза. Там помотрел что да и как
15 dezss
 
22.06.18
16:06
(14) ну тогда цикл по структуре и выводи куда-нить лог с ключ - значение...
16 dezss
 
22.06.18
16:06
(15) + по отладчику не подскажу...сам хттп-сервис не делал