Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Разобрать JSON ответ / 13 сообщений из 13, страница 1 из 1
17.10.2018, 19:27
    #39719072
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
{"databases":[{"id"              : "aOWO_dVXHdHie1WeGFE8k2"
 "name"            : "Database Name 1",
 "created_at"      : "2011-08-16T05:42:40-05:00",
 "updated_at"      : "2011-08-16T05:42:40-05:00",
 "dtypes_count"    : 0,
 "entities_count"  : 1,
 "properties_count": 0
 },
{"id"              : "aOWO3eVXHdHie1WeGFE8k2"
 "name"            : "Database Name 2",
 "created_at"      : "2011-04-29T01:26:22-05:00",
 "updated_at"      : "2011-08-16T00:47:56-05:00",
 "dtypes_count"    : 768,
 "entities_count"  : 6,
 "properties_count": 240
} ]}



помогите разобрать этот json ответ...
покажите наглядно как это сделать..
...
Рейтинг: 0 / 0
17.10.2018, 19:40
    #39719076
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
VladimirVVP,

Версия Delphi какая?
...
Рейтинг: 0 / 0
17.10.2018, 20:16
    #39719086
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
_Vasilisk_VladimirVVP,

Версия Delphi какая?

10, мне нужно , так сказать (стандартыми средствами)..
...
Рейтинг: 0 / 0
17.10.2018, 20:28
    #39719090
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
var
  vJSONBytes: TBytes;
  vJSONScenario: TJSONValue;
  vJSONArray: TJSONArray;
  vJSONValue: TJSONValue;
  vJSONObject: TJSONObject;
  vJSONPair: TJSONPair;
  vJSONScenarioEntry: TJSONValue;
  vJSONScenarioValue: TJSONString;
begin
  vJSONBytes := TFile.ReadAllBytes(aFileName);

  vJSONScenario := TJSONObject.ParseJSONValue(vJSONBytes, 0);
  if vJSONScenario <> nil then
  try
    //BetFair Specific 'caption' key
    vJSONArray := vJSONScenario as TJSONArray;
    for vJSONValue in vJSONArray do
    begin
      vJSONObject := vJSONValue as TJSONObject;
      vJSONPair := vJSONObject.Get('caption');
      vJSONScenarioEntry := vJSONPair.JsonValue;
      vJSONScenarioValue := vJSONScenarioEntry as TJSONString;
      cbScenario.Items.Add(vJSONScenarioValue.Value);
    end;
  finally
    vJSONScenario.Free;
  end;
...
Рейтинг: 0 / 0
17.10.2018, 21:06
    #39719103
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
Стандартные конечно хорошо, но XSuperObject 2 файла 150Кб
и гораздо удобнее
...
Рейтинг: 0 / 0
17.10.2018, 22:06
    #39719122
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
X-Cite
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
var
  vJSONBytes: TBytes;
  vJSONScenario: TJSONValue;
  vJSONArray: TJSONArray;
  vJSONValue: TJSONValue;
  vJSONObject: TJSONObject;
  vJSONPair: TJSONPair;
  vJSONScenarioEntry: TJSONValue;
  vJSONScenarioValue: TJSONString;
begin
  vJSONBytes := TFile.ReadAllBytes(aFileName);

  vJSONScenario := TJSONObject.ParseJSONValue(vJSONBytes, 0);
  if vJSONScenario <> nil then
  try
    //BetFair Specific 'caption' key
    vJSONArray := vJSONScenario as TJSONArray;
    for vJSONValue in vJSONArray do
    begin
      vJSONObject := vJSONValue as TJSONObject;
      vJSONPair := vJSONObject.Get('caption');
      vJSONScenarioEntry := vJSONPair.JsonValue;
      vJSONScenarioValue := vJSONScenarioEntry as TJSONString;
      cbScenario.Items.Add(vJSONScenarioValue.Value);
    end;
  finally
    vJSONScenario.Free;
  end;



Вот теперь я еще сильнее запутался))

и как мне тут получить к примеру "name" : "Database Name 1" и поместить это ( Database Name 1: string) в пременную?
...
Рейтинг: 0 / 0
17.10.2018, 22:08
    #39719123
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
VladimirVVP,

Методом тыка.
Классы есть, help + intellisense в помощь
...
Рейтинг: 0 / 0
17.10.2018, 22:15
    #39719126
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
незнакомый json разбирается в любом онлайн просмоторщике типа этого:
https://jsoneditoronline.org/

А уже из структуры можно писать и свой код.
...
Рейтинг: 0 / 0
17.10.2018, 22:36
    #39719131
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
JaDiнезнакомый json разбирается в любом онлайн просмоторщике типа этого:
https://jsoneditoronline.org/

А уже из структуры можно писать и свой код.
пример ТС из первого сообщения выдаёт ошибки и не парсится
...
Рейтинг: 0 / 0
17.10.2018, 22:40
    #39719132
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
defecatorпример ТС из первого сообщения выдаёт ошибки и не парсится
Потому что этот пример битый.

Там запятых не хватает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
{"databases":[
 {
   "id"              : "aOWO_dVXHdHie1WeGFE8k2",
   "name"            : "Database Name 1",
   "created_at"      : "2011-08-16T05:42:40-05:00",
   "updated_at"      : "2011-08-16T05:42:40-05:00",
   "dtypes_count"    : 0,
   "entities_count"  : 1,
   "properties_count": 0
 },
 {
   "id"              : "aOWO3eVXHdHie1WeGFE8k2",
   "name"            : "Database Name 2",
   "created_at"      : "2011-04-29T01:26:22-05:00",
   "updated_at"      : "2011-08-16T00:47:56-05:00",
   "dtypes_count"    : 768,
   "entities_count"  : 6,
   "properties_count": 240
  }
...
Рейтинг: 0 / 0
17.10.2018, 22:40
    #39719133
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
{"databases":[
 {
   "id"              : "aOWO_dVXHdHie1WeGFE8k2",
   "name"            : "Database Name 1",
   "created_at"      : "2011-08-16T05:42:40-05:00",
   "updated_at"      : "2011-08-16T05:42:40-05:00",
   "dtypes_count"    : 0,
   "entities_count"  : 1,
   "properties_count": 0
 },
 {
   "id"              : "aOWO3eVXHdHie1WeGFE8k2",
   "name"            : "Database Name 2",
   "created_at"      : "2011-04-29T01:26:22-05:00",
   "updated_at"      : "2011-08-16T00:47:56-05:00",
   "dtypes_count"    : 768,
   "entities_count"  : 6,
   "properties_count": 240
  }
]}
...
Рейтинг: 0 / 0
17.10.2018, 23:58
    #39719139
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
Если делфи не совсем старье, то рекомендую библиотеку JsonDataObjects . Очень простая в использовании, не требует установки. Получение и автосоздание объектов и значений прямо налету (причем в нативных значениях типа integer, datetime, string, array, object).

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
uses
  JsonDataObjects;

procedure TForm13.FormCreate(Sender: TObject);
var
  obj: TJsonObject;
begin
  obj := TJsonObject.Parse('{"databases":[{"id":"aOWO_dVXHdHie1WeGFE8k2","name":"Database Name 1",'
    + '"created_at":"2011-08-16T05:42:40-05:00","updated_at":"2011-08-16T05:42:40-05:00","dtypes_count":'
    + '0,"entities_count":1,"properties_count":0},{"id":"aOWO3eVXHdHie1WeGFE8k2","name":"Database Name 2",'
    + '"created_at":"2011-04-29T01:26:22-05:00","updated_at":"2011-08-16T00:47:56-05:00","dtypes_count":768,'
    + '"entities_count":6,"properties_count":240}]}') as TJsonObject;

  ShowMessage('Objects list:' + sLineBreak
    + Format('%d, %s, created %s', [0, obj.A['databases'][0].S['name'], DateToStr(obj.A['databases'][0].D['created_at'])]) + sLineBreak
    + Format('%d, %s, created %s', [1, obj.A['databases'][1].S['name'], DateToStr(obj.A['databases'][1].D['created_at'])])
    );
end;
...
Рейтинг: 0 / 0
18.10.2018, 00:12
    #39719142
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разобрать JSON ответ
Причем создание аналогичным образом идет. Благодаря чему избавляемся от кучи проверок и лишнего кода, если в json'е что-то отсутствует. Короче, одно удовольствие с ней работать.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Разобрать JSON ответ / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]