[英]How to format neasted json array depends on conditions request json for api
如何格式化嵌套的json數組取決於條件,我有針對API的表單請求json
這是我的前端json數組,我使用角反應形式創建了該數組
但是Api需要並且不僅是空字段
在上面的數組中是嵌套的天->時間->休息
條件
1)如果天不包含時間,則無需累加(例如:第3天不包含時間,因此無需提交)
2)如果街區,樓層,房間是空的,則無需登頂(例如:day [1] -timing [1],timing [2],day [2] -timing [2])
3)如果休息時間為空,則無需在天之內提交休息時間數組(例如:day1 [1]->計時[3],day [2]-> timings [2])
4
),如果模式為true(持續時間,數量),如果模式為true(需要開始時間,結束時間)
5)api不需要嵌套(只需要普通數組)(例如:[{},{},{}])
通過以上條件,您可以假設該數組
我嘗試使用for循環來解決它,但是重復的事情做得不好
前端陣列
{
"startDate":"10-05-2018",
"endDate":"13-05-2018",
"days":[
{
"dayId":1,
"timings":[
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":1,
"floors":2,
"rooms":3,
"breaks":[
{
"type":1,
"mode":false,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
},
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
}
]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":"",
"floors":"",
"rooms":"",
"breaks":[
{
"type":1,
"mode":false,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
}
]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":"",
"floors":"",
"rooms":"",
"breaks":[
]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":2,
"floors":3,
"rooms":3,
"breaks":[
]
}
]
},
{
"dayId":2,
"timings":[
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":1,
"floors":2,
"rooms":3,
"breaks":[
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
}
]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":"",
"floors":"",
"rooms":"",
"breaks":[
]
}
]
},
{
"dayId":3,
"timings":[
]
}
]
}
請求的數組
{
"start_date":"05-05-2018",
"end_date":"31-07-2018",
"branch_id":"2",
"day":[
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"breaks":[
{
"type":1,
"mode":false,
"duration":1,
"quantity":1
},
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",
}
],
"gen_repeat_cycle_id":"1",
"room_id":"1",
"floor_id":"2",
"block_id":"3"
},
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"breaks":[
{
"type":1,
"mode":false,
"duration":1,
"quantity":1
}
],
"gen_repeat_cycle_id":"2"
},
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"gen_repeat_cycle_id":"1"
},
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"gen_repeat_cycle_id":"1",
"room_id":"1",
"floor_id":"2",
"block_id":"3"
},
{
"id":"2",
"start_time":"10:00",
"end_time":"12:00",
"breaks":[
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",
}
],
"gen_repeat_cycle_id":"1",
"room_id":"1",
"floor_id":"2",
"block_id":"3"
},
{
"id":"2",
"start_time":"10:00",
"end_time":"12:00",
"gen_repeat_cycle_id":"1"
}
]
}
請幫我
(更新)這是我想出的解決方案
function processData(data) {
var newData = {};
newData.start_date = data.startDate;
newData.end_date = data.endDate;
newData.day = [];
for(var i = 0; i < data.days.length; i++) {
var currentDay = data.days[i];
for(var j = 0; j < currentDay.timings.length; j++) {
var currentTiming = currentDay.timings[j];
var newTimingObject = {};
newTimingObject.start_time = currentTiming.startTime;
newTimingObject.end_time = currentTiming.endTime;
newTimingObject.gen_repeat_cycle_id = currentTiming.cycle.toString();
newTimingObject.id = currentDay.dayId.toString();
if(currentTiming.breaks.length > 0) {
var currentBreaks = [];
for(var k = 0; k < currentTiming.breaks.length; k++) {
var newBreakObject = {};
newBreakObject.type = currentTiming.breaks[k].type;
newBreakObject.mode = currentTiming.breaks[k].mode;
if(currentTiming.breaks[k].mode === true) {
newBreakObject.startTime = currentTiming.breaks[k].startTime;
newBreakObject.endTime = currentTiming.breaks[k].endTime;
} else {
newBreakObject.duration = currentTiming.breaks[k].duration;
newBreakObject.quantity = currentTiming.breaks[k].quantity;
}
currentBreaks.push(newBreakObject);
}
newTimingObject.breaks = currentBreaks;
}
if(currentTiming.blocks !== '') {
newTimingObject.block_id = currentTiming.blocks.toString();
}
if(currentTiming.floors !== '') {
newTimingObject.floor_id = currentTiming.floors.toString();
}
if(currentTiming.rooms !== '') {
newTimingObject.room_id = currentTiming.rooms.toString();
}
newData.day.push(newTimingObject);
}
}
return newData;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.