/ / Wyodrębnij określone wartości z tablicy JSON - json, delphi

Wyodrębnij określone wartości z tablicy JSON - json, delphi

Mam odpowiedź JSON sformatowaną w ten sposób:

- Client 1
- Date: 15.07.2017
- Name: John
- URL: www.google.com
- Client 2
- Date: 15.07.2017
- Name: Jane
- URL: www.google.com
- Client N...

Jak mogę wyodrębnić tylko wartość Nazwa i adres URLod każdego klienta, aby na przykład dodać je do listy? Zwróć też uwagę, że "Klient 1" może być nazwany inaczej, np. "Użytkownik 1" lub tylko "1", który nie jest ważny, ale kod powinien wyodrębnić wartości bez względu na nazwę obiektu nadrzędnego.

PS: Przepraszam za missleading, powyższy format JSON był pseudokodem z pamięci, rzeczywisty format to:

[
{
"date":"xxx",
"name":"xxx",
"url":"xxx"
},
{
"date":"xxx",
"name":"xxx",
"url":"xxx"
},
{
"date":"xxx",
"name":"xxx",
"url":"xxx"
}
]

Odpowiedzi:

2 dla odpowiedzi № 1

Odpowiedz na wypadek, gdyby ktoś patrzył.

procedure Answer;
var
JSON: string;
ClientItem: TJSONValue;
ClientList: TJSONArray;
ListBoxItem: TListBoxItem;
begin
JSON := TFile.ReadAllText(".your-file.json");
ClientList := TJSONObject.ParseJSONValue(JSON) as TJSONArray;
if Assigned(ClientList) then
try
ListBox.Items.BeginUpdate;
try
for ClientItem in ClientList do
begin
ListBoxItem := TListBoxItem.Create(ListBox);
ListBoxItem.StyleLookup := "CustomListbox";
ListBoxItem.StylesData["URL"] := ClientItem.GetValue<string>("url");
ListBoxItem.StylesData["Name"] := ClientItem.GetValue<string>("name");
Listbox.AddObject(ListBoxItem);
end;
finally
Listbox.Items.EndUpdate;
end;
finally
ClientList.Free;
end;
end;