Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 22.05.2016, 17:27   #1
mailkyda
Новичок
 
Регистрация: 22.05.2016
Сообщений: 2
Репутация: 10
По умолчанию Парсинг JSON. (X-SuperObject) Delphi XE8

Delphi XE8. Для парсинга использовал X-SuperObject.
Работаю с API VK получаю JSON ответ.
Выдернуть access_token получилось без проблем вот таким способом:
Код:

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;

Все бы ничего, но не получается вытащить вытащить значение ключа photo_75 в массиве attachments. Ниже дан код.

Код:

{
   "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"
                  }
               }
            ]
         }
      ]
   }
}

Проблема в том что не знаю как правильно указать путь. Пытался как-то так:

Код:

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'];


Последний раз редактировалось Alex11223; 22.05.2016 в 17:37.
mailkyda вне форума   Ответить с цитированием
Старый 23.05.2016, 08:13   #2
mailkyda
Новичок
 
Регистрация: 22.05.2016
Сообщений: 2
Репутация: 10
По умолчанию

Проблему решил вот таким кодом.
Код:

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;

Изображения
Тип файла: png 2016-05-23_00-05-59.png (21.4 Кб, 76 просмотров)
mailkyda вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Json superobject забрать значение FLIER Работа с сетью в Delphi 6 17.09.2015 15:02
Парсинг JSON и занос его к stringgrid ffirstal4 Общие вопросы Delphi 3 17.03.2015 11:36
JSON (SuperObject) and Synapse(HTTPS) LiteCrew Работа с сетью в Delphi 1 15.02.2015 21:34
json библиотека Superobject C_R_E_S_C_H Общие вопросы Delphi 0 20.05.2012 22:21
Парсинг массива в json C_R_E_S_C_H Общие вопросы Delphi 0 12.05.2012 23:39


15:06.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru