Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=67453)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ JSON в соответствии

Автор: burza 18.01.24, 10:28

Знаю что тема уже заёрзанная но все же не могу разобрать где ошибка.
Пытаю читать в соответсвии json и вот тут ошибка

Ошибка при вызове метода контекста (УстановитьСтроку)
{ВнешняяОбработка.LidoJSON.Форма.Форма.Форма(18)}:ЧтениеJSON.УстановитьСтроку(мсСтрока.Значение);
{ВнешняяОбработка.LidoJSON.Форма.Форма.Форма(5)}:ЗаполнитьТаблицу();

по причине:
Несоответствие типов (параметр номер '1')


    ПолученныеДанные = ЧтениеИзJSON();  
        
                Для каждого СтрокиСоотв из ПолученныеДанные Цикл
                Для каждого мсСтрока из СтрокиСоотв Цикл
                    ЧтениеJSON = новый ЧтениеJSON;
                    ЧтениеJSON.УстановитьСтроку(мсСтрока.Значение);
                    СтруктураДанных = ПрочитатьJSON(ЧтениеJSON);
                    
                         НоваяСтрока = Таб.Добавить();
                        НоваяСтрока.Артикул =  СтруктураДанных.vendorCode;
                                                                     
                      КонецЦикла;
            КонецЦикла;


burza @ Сегодня, 10:23 * ,

Автор: alex-l1904 18.01.24, 10:30

burza @ Сегодня, 11:23 * ,
що саме міститься в мсСтрока.Значение коли виникає помилка ?

Автор: burza 18.01.24, 10:37

alex-l1904 @ Сегодня, 10:30 * ,
фото выклал
или есть пример как читать в соответствии

Автор: alex-l1904 18.01.24, 10:42

burza @ Сегодня, 11:37 * ,
для початку можна

Попытка
ЧтениеJSON.УстановитьСтроку(мсСтрока.Значение);
Исключение
КонецПопытки

чи це помилка одного рядка ? якщо так, то порівняти з коректними рядками...

Автор: burza 18.01.24, 10:53

alex-l1904 @ Сегодня, 10:42 * ,
через попытку, вроде не строки проблема а всего. хотя через отладку видно что данные есть

Ошибка при вызове метода контекста (ПрочитатьJSON)
{ВнешняяОбработка.LidoJSON.Форма.Форма.Форма(23)}:СтруктураДанных = ПрочитатьJSON(ЧтениеJSON);
{ВнешняяОбработка.LidoJSON.Форма.Форма.Форма(5)}:ЗаполнитьТаблицу();

по причине:
Источник данных JSON не открыт

burza @ Сегодня, 10:44 * ,
все вроде ок а не идет, глаза уже замылил)

Автор: alex-l1904 18.01.24, 11:05

burza @ Сегодня, 11:53 * ,
із довідки

УстановитьСтроку(<СтрокаJSON>)
Параметры:
<СтрокаJSON> (обязательный)
Тип: Строка.
Строка, содержащая текст в формате JSON.

треба значення мсСтрока.Значение привести до Строка, содержащая текст в формате JSON.

Автор: burza 18.01.24, 11:17

alex-l1904 @ Сегодня, 11:05 * ,
так там и так она вроде. есть какой-то может пример у кого как прочитать?

Автор: alex-l1904 18.01.24, 11:36

burza @ Сегодня, 12:17 * ,
є питання, якщо в мсСтрока.Значение міститься Соответствие, то нащо

ЧтениеJSON = новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(мсСтрока.Значение);
СтруктураДанных = ПрочитатьJSON(ЧтениеJSON);

?

Автор: burza 18.01.24, 11:38

alex-l1904 @ Сегодня, 11:36 * ,
а как его раскрыть? циклом по строке не то, нужно уже получить весь список что там есть? как сделать?

Автор: alex-l1904 18.01.24, 11:41

burza @ Сегодня, 12:38 * ,


Для Каждого ЭлементСоответствия из Соответствие1 цикл
Сообщить("Соответствие1 [" +
Строка(ЭлементСоответствия.Ключ) + "] = " +
ЭлементСоответствия.Значение);
КонецЦикла;

Автор: burza 18.01.24, 12:22

alex-l1904 @ Сегодня, 11:41 * ,
мне нужно результат добавить в таблицу значений. в одну строку всё. а циклом будет перебирать по каждой и данные со строки уже будет писать в новую в таблице. Должно быть в таком виде.

Артикул = Результат["article"];
Бренд = Результат["brand"];
Наименование = Результат["name"];
Цена = Результат["price"]

burza @ Сегодня, 11:45 * ,
Вот как работает

      ПолученныеДанные = ЧтениеИзJSON();  
        
                Для каждого СтрокиСоотв из ПолученныеДанные Цикл
                    Для каждого мсСтрока из СтрокиСоотв Цикл  
                            
                    
                    ЧтениеJSON = новый ЧтениеJSON;                
                    Строка = мсСтрока.Значение;
                    СтрокаJSON = Строка;
                    
                    
                            
                         НоваяСтрока = Таб.Добавить();

                               НоваяСтрока.Артикул      = СтрокаJSON["vendorCode"];
                            НоваяСтрока.id        = СтрокаJSON["id"];
                            НоваяСтрока.categoryId        = СтрокаJSON["categoryId"];
                            НоваяСтрока.vendor        = СтрокаJSON["vendor"];
                            НоваяСтрока.description        = СтрокаJSON["description"];
                            НоваяСтрока.name        = СтрокаJSON["name"];
                            НоваяСтрока.price_main        = СтрокаJSON["price_main"];
                            
                            
                                       
                      КонецЦикла;
            КонецЦикла;

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua