//----------例子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
}
]
},....
]
}