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);
返回字段值:
CpnID
ShortName
FullName
showmessage(jf.AsString);
返回值:
{"FullName":"宝沪国际(A)貿易有限公司","ShortName":"宝沪国际-A","CpnID":"BHA"}
//----------------------------------------------------
sColName :=jf.AsObject.GetNames.AsString;
showmessage(sColName);
返回值:
["FullName","ShortName","CpnID"]
//----------------------------------------------------
sValue:=jf.AsObject.GetValues.AsString ;
showmessage(sValue);
返回值:
["宝沪国际(A)貿易有限公司","宝沪国际-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