1、Json文本:
{"infcode":"0","inf_refmsgid":"320000202107071540300000539098","refmsg_time":"20210707154030082","respond_time":"20210707154030221","enctype":"","signtype":"","err_msg":null,"output":{"idetinfo":[],"baseinfo":{"certno":"321321198808030019","psn_no":"32130000000000006000157447","gend":"1","brdy":"1988-08-03","naty":"01","psn_cert_type":"01","psn_name":"韩科","age":30.2},"insuinfo":[{"insuplc_admdvs":"321311","psn_insu_date":"2010-04-01","cvlserv_flag":"0","balc":4.15,"emp_name":"个体单位321311","psn_type":"1103","psn_insu_stas":"2","insutype":"310","paus_insu_date":"2016-11-01"},{"insuplc_admdvs":"321311","psn_insu_date":"2010-04-01","cvlserv_flag":"0","balc":0,"emp_name":"个体单位321311","psn_type":"1103","psn_insu_stas":"2","insutype":"330","paus_insu_date":"2016-11-01"},{"insuplc_admdvs":"321311","psn_insu_date":"2010-04-01","cvlserv_flag":"0","balc":0,"emp_name":"个体单位321311","psn_type":"1103","psn_insu_stas":"2","insutype":"510","paus_insu_date":"2016-11-01"},{"insuplc_admdvs":"321399","psn_insu_date":"2010-01-01","cvlserv_flag":"0","balc":0,"emp_name":"顺河街道","psn_type":"1501","psn_insu_stas":"1","insutype":"390","paus_insu_date":null}]}}
2、转换代码
procedure TForm2.FormShow(Sender: TObject);
var Jobj,JoOut,JoData: TJSONObject;
JoArry:TJSONArray;
i, J:Integer;
insutype, temp: string;
arr01: array of string;
begin
try
Jobj:= TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
// ShowMessage(Jobj.Get('respond_time').JsonValue.Value);
JoOut:= TJSONObject.ParseJSONValue(Jobj.GetValue('output').ToString) as TJSONObject;
JoArry := JoOut.GetValue('insuinfo') as TJSONArray;
if JoArry.Size <= 0 then
Exit;
myDataSet := TClientDataSet.Create(application);
//创建列名
JoData:= TJSONObject.ParseJSONValue(JoArry.Get(0).ToString) as TJSONObject ;
for i := 0 to JoData.Count - 1 do
begin
myDataSet.FieldDefs.Add(JoData.Get(i).JsonString.Value,ftstring,200);
end;
myDataSet.CreateDataSet; //建立
myDataSet.Active;
//循环数组 绑定数据
for I := 0 to JoArry.Size - 1 do
begin
JoData:= TJSONObject.ParseJSONValue(JoArry.Get(I).ToString) as TJSONObject ;
myDataSet.Edit;
arr01:= nil;
for J := 0 to JoData.Count - 1 do
begin
SetLength(arr01,Length(arr01)+1);
arr01[High(arr01)] := JoData.Get(J).JsonValue.Value;
//根据列名Post数据
myDataSet.FieldByName(JoData.Get(J).JsonString.Value).AsString:= JoData.Get(J).JsonValue.Value;
end;
myDataSet.Post;
end;
finally
end;
end;
3、备注:尽量使用JoData.Get(J).JsonString.Value 不要使用tostring, 不然会多双引号!
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.065842866897583 seconds