使用SuperObject访问JSON数组

avu*_*vue 3 arrays delphi json superobject

我最近已经从使用ULKJson切换到SuperObject,我一直在寻找包装附带的示例,并且已经取得了一些进展,但是看起来我遇到了障碍.更具体地说,我似乎无法找到一个示例来说明如何访问数组中的项目,如下例中的项目.

{
  "name": "John Smith",
  "tel": 555-5555,
  "age": 18,
  "height": 1.8,
  "place": [{"address": "PO Box 1234", "city": "Florida", "code": 2000},
            {"address": "1 Sparrow street", "city": "Florida", "code": 2000}]
}
Run Code Online (Sandbox Code Playgroud)

要访问常规项目,我使用以下代码似乎工作得很好.

procedure TForm1.Button1Click(Sender: TObject);
var
  SO : ISuperObject;
  age, height, tel : Integer;
  name : String;
begin
  SO := TSuperObject.ParseFile('JSON.txt',true);
  name := SO.S['name'];
  age := SO.I['age'];
  tel := SO.I['tel'];
  height := SO.I['height'];

  Memo1.Lines.Clear;

  Memo1.Lines.Add('Name: ' + name);
  Memo1.Lines.Add(#10#13);

  Memo1.Lines.Add('Age: ' + age);
  Memo1.Lines.Add(#10#13);

  Memo1.Lines.Add('Telephone: ' + tel);
  Memo1.Lines.Add(#10#13);

  Memo1.Lines.Add('Height: ' + height);
  Memo1.Lines.Add(#10#13);
end;
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何访问Place数组中的项目,我确信我只是忽略了一些简单的东西,但我在演示中找不到任何示例如何访问这些数据,并希望其中一位大师这里或许可以提供一些帮助,或至少指向一个我可以向自己学习的指南.

小智 6

我这样做的方式很简单:

var
  location:ISuperObject;
begin
   for location in SO['place'] do
      Memo1.Lines.Add(location.S['address']); //etc.
   end;
end;
Run Code Online (Sandbox Code Playgroud)

正如TLama所建议的那样,简短指南确实是一个很好的学习资源.