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()初始化的问题上、开始的时候在外围初始化的。有兴趣的朋友可以自己试一下效果。

posted on 2020-10-10 14:28  丶愤怒的蘑菇  阅读(205)  评论(0编辑  收藏  举报