本文整理自网络,侵删。
var jo, jf: ISuperObject; ja: TSuperArray; s,sColName,sValue: string; //------------------------------//取某节点下字段列表 jo := SO(AJson); //载入JSON字符串 //ja:= jo['DATA'].AsArray; //取某节点下所有数据并序列化 ja:= jo.A['DATA']; //跟上面的效果一样 ja:=SO(AJson).AsArray; //无节点json字符串序列化 jf := ja.O[0]; //取DATA节点下第一条记录 ColList:=TStringList.Create; for i := 0 to jf.AsObject.count - 1 do begin ColList.Add(jf.AsObject.GetNames.AsArray[i].AsString ); //逐一取DATA节点下jf下的字段名 //jf.AsObject.GetValues.AsArray[i].AsString; //逐一取DATA节点下jf下的字段值 end; showmessage(ColList.Text); 返回字段值:CpnIDShortNameFullName showmessage(jf.AsString); 返回值:{"FullName":"宝沪国际(A)?Q易有限公司","ShortName":"宝沪国际-A","CpnID":"BHA"} //----------------------------------------------------sColName :=jf.AsObject.GetNames.AsString;showmessage(sColName); 返回值:["FullName","ShortName","CpnID"]//----------------------------------------------------sValue:=jf.AsObject.GetValues.AsString ;showmessage(sValue); 返回值:["宝沪国际(A)?Q易有限公司","宝沪国际-A","BHA"] //----------------------------------------------------jf.AsObject.GetValues.AsArray[k].AsString; //取DATA节点下的字段值
节点循环取值示例:
procedure TForm1.Button7Click(Sender: TObject);var jo: ISuperObject; i: integer;begin jo := SO('{"A":1, B:2, C:3, D:4,E:5,F:6}'); Memo2.Clear; for i := jo.AsObject.count - 1 downto 0 do begin Memo2.Lines.Add(jo.AsObject.GetNames.AsArray[i].AsString + ':' + jo.AsObject.GetValues.AsArray[i].AsString); end; Memo2.Lines.Add(jo.S['E']); //取E的值 5 for i := jo.AsObject.count - 1 downto 0 do begin Memo2.Lines.Add(jo.AsObject.GetNames.AsArray[i].AsString ); end; //Memo2.Lines.Add(jo.S['E']); //取E的值 5 end;执行结果:
https://blog.csdn.net/wh445306/article/details/101992002
相关阅读 >>
更多相关阅读请进入《Delphi》频道 >>