json數據扁平化處理

json數據扁平化處理

 

/*
* 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
}
相關文章
相關標籤/搜索