Получение данных с JSON

1. UPKA 24.06.22 11:19 Сейчас в теме
Здравствуйте уважаемые однофорумчане, подскажите пожалуйста. Хочу обработать запрос о пользователе с телеграмм. Получаю ответ в JSON. Так как ранее не работал с данным форматом, то хотел бы узнать, как его правильно разобрать и записать в реквизиты справочника?
Допустим:

Пользователи = Справочники.ПользователиТелеграмм.НайтиПоРеквизиту("ID",ID);

Пользователи.Получить();

Пользователи.Имя = Имя;

Пользователи.Ник = Ник;

Пользователи.Записать();

Ниже с JSON получить данные в такой структуре.

ID = "123456789"

Имя: "Иван"

Ник: "Иванов"

Сама строка у меня находится в реквизите: Ответ.СтрокаJSON

{
"ok": true,
"result": {
"user": {
"id": 123456789,
"is_bot": false,
"first_name": "Иван",
"username": "Иванов",
"language_code": "ru"
},
"status": "member"
}
}
По теме из базы знаний
Найденные решения
7. Onwardv 64 24.06.22 11:45 Сейчас в теме
(4)
Примерный код из Вашего примера (Но не проверял):


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

ID = СтруктураДанных.result.user.id;
Имя = СтруктураДанных.result.user.first_name;
Ник = "";

Пользователи = Справочники.ПользователиТелеграмм.НайтиПоРеквизиту("ID",ID);
Пользователи.Получить();

Пользователи.Имя = Имя;
Пользователи.Ник = Ник;

Пользователи.Записать();
Показать


Ну и там проверки всякие нужные на заполненность и т.д.

Также, обратите внимание, что "Ник" по Вашему JSON не приехал
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. UPKA 24.06.22 11:21 Сейчас в теме
(2) Причем здесь получение данных? Данные я получил, мне необходимо их разобрать и записать. Про запись данных в этой статье ничего нет.
10. PLAstic 295 26.06.22 13:12 Сейчас в теме
(3) Если тебе недостаточно описания формата в описании API у телеграма, то в конфе есть пакет XDTO, где описан формат. С его помощью всё раскладывается.
4. Onwardv 64 24.06.22 11:39 Сейчас в теме
Так:

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


И далее работаешь со структурой.
6. UPKA 24.06.22 11:42 Сейчас в теме
(4) Это я уже видел. Этот пример присутствует на всех сайтах в выдаче поисковикв.На этом все)

По сути я уже получил данные в строку и записал все содержимое в реквизит Ответ.СтрокаJSON. Пример содержимого описал ниже. Т.е. что делать с этой строкой непонятно.
8. Onwardv 64 24.06.22 11:48 Сейчас в теме
(6) Понятно.


Рекомендую поставить точку останова в отладчике на строке:

ЧтениеJSON.Закрыть();


И посмотрите, что содержит в себе "СтруктураДанных" (SHIFt+F9)
7. Onwardv 64 24.06.22 11:45 Сейчас в теме
(4)
Примерный код из Вашего примера (Но не проверял):


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

ID = СтруктураДанных.result.user.id;
Имя = СтруктураДанных.result.user.first_name;
Ник = "";

Пользователи = Справочники.ПользователиТелеграмм.НайтиПоРеквизиту("ID",ID);
Пользователи.Получить();

Пользователи.Имя = Имя;
Пользователи.Ник = Ник;

Пользователи.Записать();
Показать


Ну и там проверки всякие нужные на заполненность и т.д.

Также, обратите внимание, что "Ник" по Вашему JSON не приехал
11. UPKA 29.06.22 18:33 Сейчас в теме
(7) Подскажите пожалуйста еще по одному вопросу.

Как вернуть первое значение file_id?


{
"ok": true,
"result": {
"total_count": 14,
"photos": [[{
"file_id": "AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABKwFQfa_ML0d0qQBAAEC",
"file_size": 4367,
"width": 160,
"height": 160
},
{
"file_id": "AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABBYsR-VFYPb806QBAAEC",
"file_size": 14094,
"width": 320,
"height": 320
},
{
"file_id": "AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABOlO5fHuDpog1KQBAAEC",
"file_size": 47984,
"width": 640,
"height": 640
}]]
}
}
12. Onwardv 64 13.07.22 12:29 Сейчас в теме
(11)

Попробуйте:
file_id = СтруктураДанных.result.photos[0].file_id;
Такое решение не подходит для прода, только для посмотреть.

Смущает меня также две квадратных скобки подряд. ..."photos": [[{..., и зарытие тоже подряд ..}]].. вроде как массив в массиве.


В понятных типах 1с:
У вас в структуре "result" структура из двух значений, где "photos" является массивом структур.


В данном случае у вас массив структур описаний файлов. Каждый элемент массива - это структура содержащая описание одного файла.

Массивы нужно обрабатывать в цикле. Потому что массив вполне может приехать пустым. Если сделаете без цикла перебора массива,
а массив пуст, то строка "СтруктураДанных.result.photos[0]" будет отваливаться по ошибке.
5. PlatonStepan 38 24.06.22 11:40 Сейчас в теме
Чтение = новый ЧтениеJSON();
Чтение.УстановитьСтроку(СтрокаJSON);
СоответствиеКиЗ = ПрочитатьJSON(Чтение, ложь);

-посмотрите справку по ПрочитатьJSON() там много вариантов, для получения объектных данных
9. UPKA 24.06.22 12:54 Сейчас в теме
(7) Спасибо большое, получилось!
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)