首页 文章

Delphi / SuperObject - 访问子节点

提问于
浏览
6

我的服务器有以下JSON:

{
   "userid":"12",
   "username":"TestChar",
   "logged":"yes",
   "status":"Premium User",
   "areas":{
      "SERVICEAREA_XX1":{
         "id":"1",
         "area":"SERVICEAREA_XX1",
         "version":"3000",
         "usr_group":"0"
      },
      "SERVICEAREA_XX2":{
         "id":"2",
         "area":"SERVICEAREA_XX2",
         "version":"31000",
         "usr_group":"0"
      },
      "SERVICEAREA_XX3":{
         "id":"3",
         "area":"SERVICEAREA_XX3",
         "version":"2000",
         "usr_group":"1"
      }
   }
}

使用SuperObjects,我可以获得“SERVICEAREA”的计数

ob['areas'].AsObject.count

我现在如何才能访问不同“SERVICEAREA”的元素?

谢谢你的帮助...

3 回答

  • 10

    马里安有你的答案 . 以下是有关如何使用示例访问项属性的更多信息:

    var
      item: ISuperObject;
    ...
    for item in ob['areas'] do
    begin
      WriteLn(item['id'].AsInteger);
      WriteLn(item['area'].AsString);
      WriteLn(item['version'].AsInteger);
    end;
    
  • 0

    您可以使用 for ... in 循环访问数组的元素:

    var
      item: ISuperObject;
    begin
      for item in ob['areas'] do ...
    

    或者没有枚举器,使用'normal'for循环:

    var
      idx: Integer;
      item: ISuperObject;
    begin
      for idx := 0 to ob['areas'].AsArray.Length - 1 do
        item := ob['areas'].AsArray[idx];
    
  • 8

    使用此代码如果要访问键/值(如Javascript for..in

    if ObjectFindFirst(JsonData, ite) then
        with JsonData.AsObject do
        repeat
          PutO(ite.key, ite.val.Clone);
        until not ObjectFindNext(ite);
        ObjectFindClose(ite);
    

相关问题