ISuperObject处理多层Json样例

//----------例子1:监控中,多层Json 
 jo: ISuperObject;
  JA_DEPT,JA_TYPE,JA_MAC:TSuperArray;    //json数组
  
    SetLength(NewDeptInfo,0);
    jo := SO(WS_Data);
    //循环放到数据里面去,
    //-------------地区
    JA_DEPT:=jo.A['BelongDept'];
    SetLength(NewDeptInfo,JA_DEPT.Length);
    for i := 0 to JA_DEPT.Length-1 do
    begin
      DEPT_ID:=JA_DEPT.O[i].I['BelongDeptId'];
            //------------- 网点(出票类型)
      JA_TYPE:=JA_DEPT.O[i].O['Dept'].AsArray;
      SetLength(NewDeptInfo[i].M_TYPE,JA_TYPE.Length);
      for j := 0 to JA_TYPE.Length-1 do
      begin
      
              //----------  机器列表
        JA_MAC:=JA_TYPE.O[j].O['MachineList'].AsArray;
        SetLength(NewDeptInfo[i].M_TYPE[j].MACHINE,JA_MAC.Length);
        NewDeptInfo[i].M_TYPE[j].TYPE_MAC_CNT:=JA_MAC.Length;
        for k := 0 to JA_MAC.Length-1 do
        begin
          STATUS:=JA_MAC.O[k].I['State'];
          NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_NO:=JA_MAC.O[k].S['MacineNo'];
          NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_STATUS:=STATUS;
          NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_BALANCE:=JA_MAC.O[k].C['Balance'];
          NewDeptInfo[i].M_TYPE[j].MACHINE[k].MchineType:=JA_MAC.O[k].I['MchineType'];
          NewDeptInfo[i].M_TYPE[j].MACHINE[k].MAC_ErrorMsg:=JA_MAC.O[k].S['ErrorMsg'];
          case STATUS of
            1: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_PRINT_CNT);      //出票
            3: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_CONVERT_CNT);    //兑奖
            2: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_ALARM_CNT);      //报警
            0,4: Inc(NewDeptInfo[i].M_TYPE[j].TYPE_STANDBY_CNT);    //待机
          end;
          NewDeptInfo[i].M_TYPE[j].TYPE_BALANCE:=NewDeptInfo[i].M_TYPE[j].TYPE_BALANCE+JA_MAC.O[k].C['Balance'];
        end;
      end;
    end;
//---------------例子2
procedure TfrmMonitorView.LoadLayout(jsonNode: ISuperObject);
var
  node: ISuperObject;
  a: TSuperArray;
  i: Integer;
begin
  inherited;
  try
    node := jsonNode.O['ActiveVehicleList'];  //这个对象是又名称的
    if (node <> nil) and (node.AsArray.Length > 0) then //判断对象 和数组长度
    begin
      a := node.AsArray;
      for i := 0 to a.Length - 1 do
        FLastActiveComms.Add(a[i].AsInteger);
    end;
  except on e: Exception do
    showmessage(e.Message);
  end;

end;
//---------例子3 //--------------实现方式
   TACCResultEntity = record
    AnalyzeAccOpenTime  :string;
    AnalyzeAccCloseTime :string;
    ACOpenTime :string;
    ACCloseTime:string;
   end;
   SubList: TList<TACCResultEntity>;
   //--------------------
procedure TLogisticsInfoEntity.FillByJson(jsonNode: ISuperobject);
var ACCResultArray: TSuperArray;
    ACArray : TSuperArray;
    ACCResult : TACCResultEntity;
    i,j :Integer;
begin
  inherited;
  SENDCOMPANYADDRESS:= jsonNode.S['SENDCOMPANYADDRESS'];
  SENDCOMPANYUSER:= jsonNode.S['SENDCOMPANYUSER'];
  SENDCOMPANYUSERTEL:= jsonNode.S['SENDCOMPANYUSERTEL'];

  ACCResultArray :=jsonNode.A['ACCResultList']; //或者类似这样 jsonNode.O['ACCResultList'].AsArray;
  if ACCResultArray.Length <=0  then Exit;  //不是退出,是判断一下,以后修改
  SubList := TList<TACCResultEntity>.Create;
  for i := 0 to ACCResultArray.Length-1 do
  begin
    ACArray:=ACCResultArray.O[i].A['ACResultList'];
    if ACArray.Length <=0 then Exit;
    for j := 0 to ACArray.Length-1 do
    begin
      ACCResult.AnalyzeAccOpenTime := ACCResultArray.O[i].S['AnalyzeAccOpenTime'];
      ACCResult.AnalyzeAccCloseTime :=  ACCResultArray.O[i].S['AnalyzeAccCloseTime'];
      ACCResult.ACOpenTime :=ACArray.O[j].S['ACOpenTime'];
      ACCResult.ACCloseTime:=ACArray.O[j].S['ACCloseTime'];
      SubList.Add(ACCResult);
    end;
  end;
//例子3 json
{
    "ACCResultList": [
        {
            "ACResultList": [
                {
                    "ACOpenTime": "2015-12-22 10:15:16",
                    "ACCloseTime": "2015-12-22 11:16:16"
                },
                {
                    "ACOpenTime": "2015-12-22 13:15:16",
                    "ACCloseTime": "2015-12-22 13:16:16"
                }
            ],
            "AnalyzeAccOpenTime": "2015-12-22 9:00:00",
            "AnalyzeAccCloseTime": "2015-12-22 14:00:00"
        },
        {
            "ACResultList": [
                {
                    "ACOpenTime": "2015-12-22 17:15:16",
                    "ACCloseTime": "2015-12-22 18:16:16"
                },
                {
                    "ACOpenTime": "2015-12-22 18:25:16",
                    "ACCloseTime": "2015-12-22 19:16:16"
                }
            ],
            "AnalyzeAccOpenTime": "2015-12-22 17:00:00",
            "AnalyzeAccCloseTime": "2015-12-22 20:00:00"
        }
    ],
    "AnalyzeCarStopStatusStartTime": "2015-12-22 9:00:00",
    "AnalyzeCarStopStatusEndTime": "2015-12-22 22:00:00",
    "CommNo": "232321",
    "AnalyzeCarSpeedLat": 2322112,
    "AnalyzeCarSpeedLon": 0
}

 

//---例子1Json格式
{
    "BelongDept": [
        {
            "BelongDeptId": 0,
            "BelongDeptName": "深圳",
            "Dept": [
                {
                    "DeptId": 110,
                    "DeptName": "网点一",
                    "IsFetchTicket": true,
                    "LastUpdateTime": "/Date(1429585474316+0800)/",
                    "MachineList": [
                        {
                            "MacineNo": "1101",
                            "MchineType": 0,
                            "Balance": 25.64,
                            "State": 1,
                            "ErrorMsg": "",
                            "ErrorState": 0,
                            "LastGetTicketTime": "/Date(1429585474317+0800)/",
                            "TicketSleepTime": 0,
                            "TodayAmount": 0,
                            "TodaySaleCount": 0,
                            "TodaySysAmount": 0,
                            "TodaySysSaleCount": 0
                        }
                    ],
                    "State": 0,
                    "TicketCount": 1100,
                    "UnusualCount": 10
                },
                {
                    "DeptId": 111,
                    "DeptName": "网点二",
                    "IsFetchTicket": false,
                    "LastUpdateTime": "/Date(1429585474317+0800)/",
                    "MachineList": [
                        {
                            "MacineNo": "1111",
                            "MchineType": 0,
                            "Balance": 1,
                            "State": 1,
                            "ErrorMsg": "",
                            "ErrorState": 0,
                            "LastGetTicketTime": "/Date(1429585474317+0800)/",
                            "TicketSleepTime": 0,
                            "TodayAmount": 0,
                            "TodaySaleCount": 0,
                            "TodaySysAmount": 0,
                            "TodaySysSaleCount": 0
                        }
                    ],
                    "State": 0,
                    "TicketCount": 1110,
                    "UnusualCount": 11
                }
            ]
        },
        {
            "BelongDeptId": 1,
            "BelongDeptName": "重庆",
            "Dept": [
                {
                    "DeptId": 122,
                    "DeptName": "网点一",
                    "IsFetchTicket": true,
                    "LastUpdateTime": "/Date(1429585474316+0800)/",
                    "MachineList": [
                        {
                            "MacineNo": "1221",
                            "MchineType": 0,
                            "Balance": 5,
                            "State": 0,
                            "ErrorMsg": "",
                            "ErrorState": 0,
                            "LastGetTicketTime": "/Date(1429585474317+0800)/",
                            "TicketSleepTime": 0,
                            "TodayAmount": 0,
                            "TodaySaleCount": 0,
                            "TodaySysAmount": 0,
                            "TodaySysSaleCount": 0
                        },
                        ....
                    ],
                    "State": 0,
                    "TicketCount": 1110,
                    "UnusualCount": 11
                },
                {
                    "DeptId": 123,
                    "DeptName": "网点二",
                    "IsFetchTicket": true,
                    "LastUpdateTime": "/Date(1429585474316+0800)/",
                    "MachineList": [
                        {
                            "MacineNo": "1231",
                            "MchineType": 0,
                            "Balance": 5,
                            "State": 1,
                            "ErrorMsg": "",
                            "ErrorState": 0,
                            "LastGetTicketTime": "/Date(1429585474317+0800)/",
                            "TicketSleepTime": 0,
                            "TodayAmount": 0,
                            "TodaySaleCount": 0,
                            "TodaySysAmount": 0,
                            "TodaySysSaleCount": 0
                        }
                    ],
                    "State": 0,
                    "TicketCount": 1110,
                    "UnusualCount": 11
                }
            ]
        },....
       
    ]
}

 

posted @ 2016-07-22 09:48  海蓝7  阅读(1994)  评论(0)    收藏  举报