Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 1

Парсинг JSON. (X-SuperObject)

22.05.2016, 23:04. Показов 6449. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi XE8. Для парсинга использовал X-SuperObject.
Получаю JSON ответ от VK. Выдернуть access_token получилось без проблем вот таким способом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  JSONObject, GContact: ISuperObject;
  JsonArray: ISuperArray;
  i: integer;
begin
  email:=Form1.Edit1.Text;
  pass:=Form1.Edit2.Text;
  response:=send('GET', 'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+email+'&password='+pass+'&captcha_key=&captcha_sid=');
 
  //получаем access_token
  JSONObject:=TSuperObject.Create;
  JSONObject:=SO(response);
  token:=JSONObject.S['access_token'];
  Form3.Edit3.Text:=token;
Из этого JSON ответа необходимо вытащить значение ключа photo_75 в массиве attachments
Java
1
{"response":{"count":1,"items":[{"id":246365,"date":1463913029,"out":0,"user_id":53453566,"read_state":1,"title":" ... ","body":"","deleted":1,"attachments":[{"type":"photo","photo":{"id":416603645,"album_id":-3,"owner_id":53453566,"photo_75":"http:\/\/cs636717.vk.me\/v636717206\/8e61\/gSCbceBaWRo.jpg","photo_130":"http:\/\/cs636717.vk.me\/v636717206\/8e62\/d3GZYEzjB2k.jpg","photo_604":"http:\/\/cs636717.vk.me\/v636717206\/8e63\/FqoPyZe1Lx8.jpg","width":491,"height":488,"text":"","date":1463913029,"access_key":"8bc37bf13f8d6df162"}}]}]}}
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  JSONObject, GContact: ISuperObject;
  JsonArray: ISuperArray;
  i: integer;
  token, response, photo : string;
begin
  ...
  ...
  ...
 
    response:=send('GET', 'https://api.vk.com/method/messages.getById?&message_ids=246365&v=5.52&access_token='+token);
 
 
///Получаем значение ключа photo_75
Memo1.Lines.Add(response);
Memo1.Lines.Delete(0);
JSONObject:=TSuperObject.Create;
JSONObject:=SO(response);
photo:=JSONObject.O['response'].A['items'].A['attachments'].O['photo'].S['photo_75'];
Проблема в том что не знаю как правильно указать путь.

Добавлено через 8 часов 28 минут
Проблему решил вот таким кодом.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
JsonObject: ISuperObject;
response, photo : string;
begin
 
/// Запрос API
response:=send('GET', 'https://api.vk.com/method/messages.getById?&message_ids=246180&v=5.52&access_token='+token);
 
/// Вывод ответа в Memo1
Memo1.Lines.Add(response);
 
/// Парсинг JSON
JSONObject:=TSuperObject.Create;
photo:=SO(response).O['response'].A['items'].O[0].A['attachments'].O[0].O['photo'].s['photo_75'];
 
/// Вывод спарсенного значения в Memo2
Memo2.Lines.Add(photo);
 
end;
Миниатюры
Парсинг JSON. (X-SuperObject)  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.05.2016, 23:04
Ответы с готовыми решениями:

Парсинг JSON
Имеется...

Парсинг JSON
Данный код выдает ошибку "access violation at address 008d4b2c" var s : string; Json: TJSONObject; Jarr : TJSONArray; ...

Парсинг Json
Здравствуйте, нужна помощь. Как получить значения ask. ...

6
0 / 0 / 0
Регистрация: 28.09.2015
Сообщений: 2
22.04.2018, 18:17
Помогите пожалуйста распарсить ответ сервера https://yobit.net/api/2/liza_btc/depth
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
22.04.2018, 20:29
а в чем должен заключаться "парсинг" ответа сервера?
0
30 / 26 / 8
Регистрация: 17.09.2015
Сообщений: 498
Записей в блоге: 6
23.04.2018, 15:45
mailkyda, Воспользуйтесь форматированием JSON, Вам сразу станет ясно уровень вложенности объектов

Кликните здесь для просмотра всего текста
Название: 2018-04-23_154447.png
Просмотров: 287

Размер: 2.1 Кб
1
30 / 26 / 8
Регистрация: 17.09.2015
Сообщений: 498
Записей в блоге: 6
23.04.2018, 16:00
asks - массив а у этого массива еще один вложенный массив в котором лежат по 2 объекта

Добавлено через 9 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Var
  jsonObj: TJsonObject;
  jsonArr1, jsonArr2: TJsonArray;
 
  i_arr1, i_arr2: integer;
begin
try
  jsonObj := TJsonObject.ParseJSONValue(JsonData, true) as TJsonObject;
  jsonArr1 := jsonObj.getValue<TJsonArray>('asks');
  
  for i_arr1:= 0 to jsonArr1 -1 do
  begin
    jsonArr2:= jsonArr1.get(i_arr1) as TJsonArray;
    for i_arr2 := 0 to jsonArr2.count -1 do
    begin
     MyVal := (jsonArr2.Get(i) as TJsonValue).jsonValue;
    end;
  emd;
  
  
finally
  jsonObj.free;
end;
end;
Добавлено через 2 минуты
текст набирал на форуме, мог ошибиться в выражениях.

Примерно так.

Да, и в USES JSON
1
0 / 0 / 0
Регистрация: 28.09.2015
Сообщений: 2
23.04.2018, 18:05
Спасибо! ваш пример очень помог!

Добавлено через 33 минуты
popryduhin, Подскажите пожалуйста еще один момент.
Почему числа вида 0.00000008, отображаются как 8E-8,а так же режутся правые крайние нули, как можно это исправить?
0
30 / 26 / 8
Регистрация: 17.09.2015
Сообщений: 498
Записей в блоге: 6
23.04.2018, 21:57
Цитата Сообщение от Miron0v Посмотреть сообщение
popryduhin, Подскажите пожалуйста еще один момент.
Почему числа вида 0.00000008, отображаются как 8E-8,а так же режутся правые крайние нули, как можно это исправить?
Вам сюда ТЫК
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2018, 21:57
Помогаю со студенческими работами здесь

Парсинг Json
В общем мне нужно получить из json &quot;body&quot;: {&quot;response&quot;: {&quot;history&quot;: ,],&quot;messages&quot;:,&quot;profiles&quot;:,&quot;new_pts&quot;:1134032}} var...

Парсинг JSON
{&quot;news&quot;:,&quot;server&quot;:{&quot;login&quot;:true,&quot;game&quot;:true,&quot;online&quot;:&quot;26&quot;},&quot;player&quot;:{&quot;name&quot;:&quot;Рамон&quot;,&quot;img&quot;:&quot;http:\/\/aion.\/img\/sniper.png&quot;,&quot;ap&quot;:&quot;15678171&q...

Парсинг JSON, реально ли?
Реально ли парсить JSON? С помощью чего и как, обьясните пожалуйста. Спасибо.

Delphi - Парсинг JSON
Добрый день. Не получается распарсить. вылетает на строчке JSONArray := TJSONArray(JSON.Get('Вопросы').JsonValue); Текст: { ...

Парсинг JSON в Delphi
Добрый день. Знаю что это тема освещалась уже несколько раз, но все что мог найти, это библиотеки для парсинга JSON с простейшими...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru