在delphi中获取json文件中的键名

时间:2015-10-08 10:37:27

标签: json delphi delphi-7

我有一个像这样的json字符串格式:

{
  "LIST":{
    "Joseph":{  
      "item1":0,
      "item2":0
    },
    "John":{
      "item1":0,
      "item2":0
    },
    "Fred":{
      "item1":0,
      "item2":0
    }
  }
}

我需要得到名字,"约瑟夫","约翰","弗雷德"等等...我有一个函数,它会在列表中添加名称,我不知道会添加什么名称,所以我需要获取这些名称。

我只能得到名字" LIST"使用此代码:

js := TlkJSONstreamed.loadfromfile(jsonFile) as TlkJsonObject;
try
 ShowMessage( vartostr(js.NameOf[0]) );
finally
 s.free;
end;

我在delphi 7中使用lkJSON-1.07

1 个答案:

答案 0 :(得分:1)

您可以依次获取名称并获取每个名称的下一个对象。

  1. 获取名称:js.NameOf[0]

  2. 从名称中获取对象:js[js.NameOf[0]]

  3. getJSONNames过程以递归方式打印TlkJSONobject对象中包含的所有名称。

    procedure getJSONNames(const Ajs: TlkJSONobject);
    var
      i: Integer;
    begin
      if Ajs = nil then
        Exit
      else
        for i := 0 to Ajs.Count-1 do begin
          WriteLn(Ajs.NameOf[i]);
          getJSONNames(TlkJSONobject(Ajs[Ajs.NameOf[i]]));
        end;
    end;
    
    var
      js: TlkJsonObject;
    begin
      js := TlkJSONstreamed.loadfromfile(jsonFile) as TlkJsonObject;
      try
        getJSONNames(js);
      finally
        js.free;
      end;
    end.