Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2016, 16:27   #1
mailkyda
Новичок
Джуниор
 
Регистрация: 22.05.2016
Сообщений: 2
По умолчанию Парсинг 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 в 16:37.
mailkyda вне форума Ответить с цитированием
Старый 23.05.2016, 07:13   #2
mailkyda
Новичок
Джуниор
 
Регистрация: 22.05.2016
Сообщений: 2
По умолчанию

Проблему решил вот таким кодом.
Код:
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 Кб, 174 просмотров)
mailkyda вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Json superobject забрать значение FLIER Работа с сетью в Delphi 6 17.09.2015 14:02
Парсинг JSON и занос его к stringgrid ffirstal4 Общие вопросы Delphi 3 17.03.2015 10:36
JSON (SuperObject) and Synapse(HTTPS) LiteCrew Работа с сетью в Delphi 1 15.02.2015 20: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