Kim*_* HJ 1 delphi json delphi-2007 ujson
我有一个看起来像这样的JSON文件,我正在尝试对其进行解码,但是没有运气:
[
{
"FirstName": "Kim",
"Surname": "Jensen"
},
{
"FirstName": "Amery",
"Surname": "Mcmillan"
},
{
"FirstName": "Denton",
"Surname": "Burnett"
}
...
]
Run Code Online (Sandbox Code Playgroud)
将uJson与Delphi 2007结合使用,我知道当数组具有如下名称时如何提取数据:
{
"Names": [
{
"FirstName": "Kim",
"Surname": "Jensen"
},
{
"FirstName": "Amery",
"Surname": "Mcmillan"
},
{
"FirstName": "Denton",
"Surname": "Burnett"
}
...
]
}
Run Code Online (Sandbox Code Playgroud)
var
json: TJSONObject;
Text: String;
i: Integer;
begin
json := TJSONObject.create(jsontext);
for i:=0 to json.getJSONArray('Names').Length -1 do
begin
Text := json.getJSONArray('Names').getJSONObject(i).optString('FirstName');
...
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是,这个数组没有名字,我已经尝试了几乎所有我能想到的东西,但是这个简单的事情却花了我几个小时才能弄清楚。
在您遇到麻烦的JSON中,顶级数据是数组,因此您需要使用TJSONArray而不是进行解析TJSONObject。
var
json: TJSONArray;
Text: String;
i: Integer;
begin
json := TJSONArray.create(jsontext);
try
for i := 0 to json.Length-1 do
begin
Text := json.getJSONObject(i).optString('FirstName');
...
end;
finally
json.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)