1、先看下想要的结果、
{ "patInfo": { "Age": "23", "姓名": "黄晓明" }, "audvaj": [{ "序号": "1", "名称": "[甲]小换药" }, { "序号": "2", "名称": "5%葡萄糖注射液(国)" }] }
2、看下组织代码
with dm.cdsTemp do begin for i:=0 to fieldcount-1 do iso1.S[Fields[i].FieldName] := VarToStrDef(fields[i].Value, ''); iso2.O['patInfo'] := iso1; strSQL := 'exec usp_getdetailinfo 1, 0'; if not OpenDS(strsql, Errmsg, cds1) then exit; with cds1 do begin First; while not eof do begin iso3 := so(); //这里需要初始化 for i:=0 to fieldcount-1 do iso3.S[Fields[i].FieldName] := VarToStrDef(fields[i].Value, ''); iso4.AsArray.Add(iso3); next; end; end; iso2.O['audvaj'] := iso4; cxmemo2.Lines.Clear; cxmemo2.Lines.Add(iso2.AsString); end;
问题出在iso3 := SO()初始化的问题上、开始的时候在外围初始化的。有兴趣的朋友可以自己试一下效果。