【问题标题】:Decode json using uJson for delphi使用 uJson for delphi 解码 json
【发布时间】:2019-11-02 14:22:16
【问题描述】:

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

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

在 Delphi 2007 中使用 uJson,我知道当数组具有这样的名称时如何提取数据:

{
  "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 delphi delphi-2007 ujson


【解决方案1】:

在您遇到问题的 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;

【讨论】:

  • 出于某种原因,我一直认为我必须先将它添加到对象中才能访问它。谢谢雷米。
猜你喜欢
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
相关资源
最近更新 更多