delphi中将数组赋值到json中

uses TSuperObject;

var

ReqJson,ReqUser,ReqEvent,NurseArray,EventRootsArray ,jfields:ISuperObject; 

begin

//声明类型

    ReqJson :=SO();
    ReqUser:=SO();
    ReqEvent:=SO();
    NurseArray:=SA([]);
    EventRootsArray:=SA([]);

    for i:= 0 to 10 do
    begin
      NurseList[i] :=SO();
      EventRootList[i] :=SO();
    end;

//查询数据库

with ADOQuery1 do

begin

Close;
        SQL.Clear;
        SQL.Add(' select ');
        open;
        if not (eof and bof) then
        begin
          for j:= 0 to recordcount-1 do
          begin

//赋值给json
            ReqUser.s['userName']:='zz';
            ReqUser.s['password']:='123456';
            ReqEvent.S['deptTypeName']:=fieldbyname('deptTypeName').asstring;
            ReqEvent.S['applyDeptMemo']:=fieldbyname('applyDeptMemo').asstring;
            ReqEvent.S['fallReason']:=fieldbyname('fallReason').asstring;
            ReqJson.O['User'] := ReqUser;
            ReqJson.O['Event'] := ReqEvent;

//查询子表的值 

          with adoquery2 do
            begin
              close;
              sql.clear;
              sql.add('  select * from this_hl_ddzc_dsr where brdlsh0='''+adoquery1.fieldbyname('lsh0000').AsString+''' ' );
              open;
              if not (eof and bof) then
              begin
                for i:= 0 to recordcount-1 do
                begin

//赋值给JSON子表的内容
                  NurseList[i].s['age'] := fieldbyname('age').asstring;
                  NurseList[i].s['duty'] := fieldbyname('zc').asstring;
                  NurseList[i].s['workYear'] := fieldbyname('gznx').asstring;
                  NurseList[i].s['inDeptYear'] := fieldbyname('fwnx').asstring;

// ******关键    将json的值循环假如到数组中
                  NurseArray.AsArray.Add(NurseList[i]);
                  next;
                end;
              end;
            end;

//将数组的内容,赋值给JSON的节点内
            ReqJson.O['NurseList'] := NurseArray;

            with adoquery2 do
            begin
              close;
              sql.clear;
              sql.add('  select * from this_hl_ddzc_sjgy where brdlsh0='''+adoquery1.fieldbyname('lsh0000').AsString+''' ' );
              open;
              if not (eof and bof) then
              begin
                for i:= 0 to recordcount-1 do
                begin

//第二个循环节点数组
                  EventRootList[i].s['rootOne'] := fieldbyname('yjgymc').asstring;
                  EventRootList[i].s['rootTwo'] := fieldbyname('ejgymc').asstring;
                  EventRootList[i].s['rootThree'] := fieldbyname('sjgymc').asstring;
                  EventRootList[i].s['isQt'] := fieldbyname('sfqt').asstring;
                  EventRootList[i].s['otherInfo'] := fieldbyname('qtxx').asstring;
                  EventRootList[i].s['rootLevel'] := fieldbyname('gycj').asstring;

//将循环节点的JSON赋值到JSON节点中

                 EventRootsArray.AsArray.Add(EventRootList[i]);
                  next;
                end;
              end;
            end;

            ReqJson.O['EventRootList'] := EventRootsArray;

          showmessage(ReqJson.AsString);
          end;
        end;

end;

DELPHI彫和JSON代码* Copyright (c) 2006,2007,2008,2009 Leonid Koninin * leon_kon@users.sourceforge.net * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY Leonid Koninin ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Leonid Koninin BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值