使用SuperObject访问JSON数组

时间:2014-07-05 20:06:25

标签: arrays json delphi 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}]
}

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

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;

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

1 个答案:

答案 0 :(得分:6)

我这样做的方式很简单:

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

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