Вход | Регистрация


Прочитать JSON формат

Прочитать JSON формат
Я
   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
кнопочку Я нажми справа от заголовка темы
   Cyberhawk
 
2 - 22.06.18 - 14:33
ПрочитатьЖСОН
   lodger
 
3 - 22.06.18 - 14:34
новый ЧтениеЖСОН.
   antihacker
 
4 - 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
}
]
}
]
   antihacker
 
8 - 22.06.18 - 14:55
Создаю я его вот так.
&НаСервере
Функция ПодготовитьДанныедляОотправки()
    
    СписокВсехДоковМСВ = Новый Массив;
    
    //Цикл по документам

    Для Каждого ТекДок Из Объект.ДокументыДляСинхронизации Цикл        
        
        ВозвратРезультатаСКА = Новый Структура();
        
        //Основные данные документа

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

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

    Конеццикла;

        //Конвертируем в JSON    

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

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

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

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

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

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

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