我最近已经从使用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 数组中的项目,我确信我只是忽略了一些简单的内容,但我在演示中找不到任何示例如何访问这些数据,并希望这里的一位大师可能能够提供一些帮助,或者至少指向一个我可以向自己学习的指南。
答案 0 :(得分:6)
我这样做的方式很简单:
var
location:ISuperObject;
begin
for location in SO['place'] do
Memo1.Lines.Add(location.S['address']); //etc.
end;
end;
正如TLama所建议的那样,简短指南确实是一个很好的学习来源。