Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 июл 2021, 01:55

Получить значение из json от firebase

Автор mishganze, 15 ноя 2020, 14:48

0 Пользователей и 1 гость просматривают эту тему.

mishganze

Есть задача создать документ на основании данных полученных от базы данных firebase
Получаю json следующего вида

{
"cGzQVDf56LVK3RBn9Y6MPbs989O2":{"barcod":"2000205030901","dr":"24.01.1978","email":"","fio":"Иванов Иван Иванович","tel":"+7(920)523-09-01"},
"kwbiSyoVVOgUuPQJF9jQuCw9Qz73":{"barcod":"2000205030900","dr":"27.01.1958","email":"","fio":"Сидоров Михаил Юрьевич","tel":"+7(920)523-09-00"}
....
}

Пытаюсь получить значение следующим способом

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJson);
КЛИЕНТЫ = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
   Для каждого Клиент Из КЛИЕНТЫ Цикл
      Сообщить(Клиент.fio + Клиент.dr+Клиент.tel);
  КонецЦикла;

В итоге получаю ошибку "Поле объекта не обнаружено (fio)". Подскажите что я не так делаю?

АлександрВладимирович

Сообщить(Клиент.Значение.fio + Клиент.Значение.dr + Клиент.Значение.tel);

mishganze

Вот спасибо. Все заработало.

mishganze

Работало, работало и в один прекрасным момент словил такую ошибку Недопустимое имя свойства "0JoaAKScj3QcYZQ4rik0o0jgWUv1" для чтения JSON. Покурив мануалы я нашел
ЦитироватьСтруктура объекта представлена ​​в виде пары фигурных фигурных скобок, окружающих нулевые или более пары имен/значений. Имя - это строка. Каждому имени соответствует один идентификатор двоеточия, отделяющий имя от значения. Один токен разделяет значение из следующего имени.
Я так понимаю что дело в имени 0JoaAKScj3QcYZQ4rik0o0jgWUv1 т.к. оно начинается с нуля. Почему так происходит ведь это явно строка? И как это исправить?
Добавлено: 26 ноя 2020, 13:03


Решил проблему сам. Регулярным выражением ищу такие строки и ставлю впереди букву.

antoneus

А можно без всяких регулярок и прочих костылей читать в соответствие.

АлександрВладимирович

Ключу структуры недостаточно быть строкой, он еще должен соответствовать правилам именования переменных, т.е. не должен начинаться с цифры. Ну и если нет возможности повлиять на передающую сторону, то можно читать в соответствие:
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJson);
КЛИЕНТЫ = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
Для каждого Клиент Из КЛИЕНТЫ Цикл
Сообщить(Клиент.Значение["fio"] + Клиент.Значение["dr"] + Клиент.Значение["tel"]);
КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск