使用 uJson 解码 json delphi

Decode json using uJson for delphi

我有一个看起来像这样的 JSON 文件,我正在尝试对其进行解码,但没有成功:

[
  {
    "FirstName": "Kim",
    "Surname": "Jensen"
  },
  {
    "FirstName": "Amery",
    "Surname": "Mcmillan"
  },
  {
    "FirstName": "Denton",
    "Surname": "Burnett"
  }
  ...
]

将 uJson 与 Delphi 2007 一起使用,我知道如何在数组具有如下名称时提取数据:

{
  "Names": [
    {
      "FirstName": "Kim",
      "Surname": "Jensen"
    },
    {
      "FirstName": "Amery",
      "Surname": "Mcmillan"
    },
    {
      "FirstName": "Denton",
      "Surname": "Burnett"
    }
    ...
  ]
}
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;

但是,这个数组没有名字,我已经尝试了几乎所有我能想到的方法,但这个简单的东西还是花了我几个小时才弄清楚。

在您遇到问题的 JSON 中,top-level 数据 数组,因此您需要使用 [=11= 解析它] 而不是 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;