/* * name:json數組拉平處理 * data:json對象或者數組 * k:前面開始可傳空 */ function expandJsonTool(data, k) { var jmap = {} var expandJson = function(jstr, mapIndex) { if (jstr instanceof Array) { for (var i in jstr) { expandJson(jstr[i], `${mapIndex}[${i}]`); } } else if (jstr instanceof Object) { for (var i in jstr) { // 若是mapIndex爲false,null,''時,則不加初始索引 if (!mapIndex) { var key = i; } else { var key = `${mapIndex}.${i}`; } // Array 是 Object 的子集,先判斷是否爲 Array,若是是,則不走Object的判斷 if (jstr[i] instanceof Array) { for (var j in jstr[i]) { expandJson(jstr[i][j], `${key}[${j}]`); } } else if ((jstr[i] instanceof Object)) { expandJson(jstr[i], key); } else { jmap[key] = jstr[i] } } } } expandJson(data, k); return jmap }
原始數據json
{ "bandEndPrize": [{ "flag": 0, "gameId": 0, "limit": 0, "orderBy": 0, "prizeIcon": "", "prizeName": "", "prizeTime": "", "prizeType": "", "unit": "" }], "bandIngPrize": [{ "flag": 0, "gameId": 0, "limit": 0, "orderBy": 0, "prizeIcon": "", "prizeName": "", "prizeTime": "", "prizeType": "", "unit": "" }], "bandTaskRequest": [{ "addGameWeekTaskReqs": [{ "orderBy": 0, "score": 0, "taskCode": "", "taskValue": 0 }, { "orderBy": 0, "score": 0, "taskCode": "", "taskValue": 0 } ], "gameId": 0, "gameWeekEnd": "", "gameWeekId": 0, "gameWeekStart": "", "id": 0, "seaTaskType": 0, "taskType": 0 }] };
處理後的數據數組
{ "bandEndPrize[0].flag": 0, "bandEndPrize[0].gameId": 0, "bandEndPrize[0].limit": 0, "bandEndPrize[0].orderBy": 0, "bandEndPrize[0].prizeIcon": "", "bandEndPrize[0].prizeName": "", "bandEndPrize[0].prizeTime": "", "bandEndPrize[0].prizeType": "", "bandEndPrize[0].unit": "", "bandIngPrize[0].flag": 0, "bandIngPrize[0].gameId": 0, "bandIngPrize[0].limit": 0, "bandIngPrize[0].orderBy": 0, "bandIngPrize[0].prizeIcon": "", "bandIngPrize[0].prizeName": "", "bandIngPrize[0].prizeTime": "", "bandIngPrize[0].prizeType": "", "bandIngPrize[0].unit": "", "bandTaskRequest[0].addGameWeekTaskReqs[0].orderBy": 0, "bandTaskRequest[0].addGameWeekTaskReqs[0].score": 0, "bandTaskRequest[0].addGameWeekTaskReqs[0].taskCode": "", "bandTaskRequest[0].addGameWeekTaskReqs[0].taskValue": 0, "bandTaskRequest[0].addGameWeekTaskReqs[1].orderBy": 0, "bandTaskRequest[0].addGameWeekTaskReqs[1].score": 0, "bandTaskRequest[0].addGameWeekTaskReqs[1].taskCode": "", "bandTaskRequest[0].addGameWeekTaskReqs[1].taskValue": 0, "bandTaskRequest[0].gameId": 0, "bandTaskRequest[0].gameWeekEnd": "", "bandTaskRequest[0].gameWeekId": 0, "bandTaskRequest[0].gameWeekStart": "", "bandTaskRequest[0].id": 0, "bandTaskRequest[0].seaTaskType": 0, "bandTaskRequest[0].taskType": 0 }