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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2013, 18:01   #1
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию JSON и DBXJSON (Delphi XE3)

Уважаемые специалисты, прошу вашей помощи тыкнуть в меня достойной ссылкой, или же книгой по голове, потому что этот вопрос меня уже конкретно достал..

Что необходимо?

{"response":
[
202539,

{"aid":102281694,
"owner_id":34715501,
"artist":"KoRN",
"title":"Get Up (Skrillex's Director's Cut)",
"duration":241,
"url":"http:\/\/cs5088.vk.me\/u34715501\/audios\/19e68e41aefd.mp3",
"lyrics_id":"10255769"
},
]
}


Из этого вытащить aid, перекопал кучу мануалов, но так и не пойму как правильно сделать парсинг..

Хотелось сделать "штатными" средствами, то есть использовать TJSONObject из юнита Data.DBXJSON
Lardes вне форума Ответить с цитированием
Старый 12.03.2013, 07:57   #2
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Собственно в чем проблема ?
Цитата:
Из этого вытащить aid,
Код:
uses StrUtils
.......

html:=IdHTTP.GET('ссылка');
aid:=Copy(  html,  pos('"aid":',html)+6,  PosEx(',',html,pos('"aid":',html)) - pos('"aid":',html) -6);
bakanaev вне форума Ответить с цитированием
Старый 12.03.2013, 11:03   #3
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

bakanaev, спасибо за предложение, но это далеко не то, что хотелось. Это только маленький кусочек JSON, а этих aid там 200 шт. Стандартный парсинг - можно конечно, но лучше делать это через TJSONObject .

Вот что собственно нарыл:
Код:
var
  JSONObject: TJSONObject;
  JSONResponse: TJSONPair;
  JSONNumber: TJSONArray;
  I: Integer;
begin
  JSONObject := TJSONObject.ParseJSONValue(AResponse) as TJSONObject;
  try
    if Assigned(JSONObject) then
    begin
      JSONResponse := JSONObject.Get('response');
      JSONNumber := JSONResponse.JsonValue as TJSONArray;
      if JSONNumber.Size > 0 then
      begin
        if JSONNumber.Get(0) is TJSONNumber then JSONNumber.Remove(0);
        for I := 0 to JSONNumber.Size - 1 do
        begin
          ShowMessage(JSONNumber.Get(I).ToString);
        end;
      end;
    end;
  finally
    FreeAndNil(JSONObject);
  end;
Показывает участок JSON кода:

{"aid":102281694,
"owner_id":34715501,
"artist":"KoRN",
"title":"Get Up (Skrillex's Director's Cut)",
"duration":241,
"url":"http:\/\/cs5088.vk.me\/u34715501\/audios\/19e68e41aefd.mp3",
"lyrics_id":"10255769"
}


А как загнать эти значения в массив догнать не могу, хоть убей
Lardes вне форума Ответить с цитированием
Старый 12.03.2013, 11:26   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://www.webdelphi.ru/2011/10/rabo...lphi-2010-xe2/

ADD

Без проверок с привязкой к конкретной структуре

Код:
var JSONObject: TJSONObject;
    JSONArray: TJSONArray;
    i: Integer;
begin
  JSONObject:=TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
  JSONArray:=JSONObject.Get(0).JsonValue as TJSONArray;
  for i:=1 to JSONArray.Size-1 do ListBox1.Items.Add((JSONArray.Get(i) as TJSONObject).Get('aid').JsonValue.Value);
  JSONObject.Free;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 12.03.2013 в 20:52.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi XE3 + LiveTile RuVarez Общие вопросы Delphi 2 25.04.2013 09:56
Работа с БД MySQL из Delphi XE3 Leximus БД в Delphi 4 16.02.2013 23:52
Delphi XE3 и модули Silverstone Общие вопросы Delphi 10 25.12.2012 21:45
Программист Delphi который поможет доделать проект на Delphi XE3 BukTop2009 Фриланс 3 26.10.2012 23:51