3

我最近从使用 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数组中的项目,并且我确信我只是忽略了一些简单的事情,但是我在演示中找不到任何示例来展示如何访问这些数据并希望其中一位大师这里也许可以提供一些帮助,或者至少给我指一个可以向自己学习的指南。

4

1 回答 1

7

我会这样做的方式很简单:

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

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

于 2014-07-06T00:51:25.993 回答