JSON 对象的 Javascript 迭代到无限 JSON 对象值的数组中

我有一个 JSON 对象,其中包含无限级别的对象。我想构造一个 JSON 数组,其中它包含一个键中的第一个键和另一个键中的所有关联值。


例如,我拥有的 JSON 如下,


{

    doingnow: {

        "action items": { "open": { "child"....}, "In Progress": { "child"....}, "Completed": { "child"....} },

        "financial": { "q1": { "jan 2017": { "child"... }, "feb 2017": {....} }, q2: {... }, q3: {... },....}

    },

    finished: { "discarded": {... } },

    .........

}

但是我期待的实际 JSON 数组


[{

    key: "doingnow": children: [{

        key: "action items", children: [{ key: "open", children: [] }, { key: "In Progress", children: [] }, { key: "Completed", children: [] }],

        key: "financial", children: [{ key: q1, children: [{ key: "jan 2017", children: [] }, { key: "feb 2017", children: [] }] },

        { key: q2, children: [{ key: "jan 2017", children: [] }, { key: "feb 2017", children: [] }] }]

    }],

}, { key: "finished", children: [{ ...}] }

谁能帮我这个?工作了2天。:-(


慕标琳琳
浏览 152回答 1
1回答

慕容森

在这种情况下,递归可能是最佳选择。const data = '{doingnow: ... your string ... }'const jsonObject = JSON.parse(data)const parseObject = (obj) => {  let returnArray = []  Object.keys(obj).forEach(key => {    let childrens = []    if (typeof obj[key] === 'object' && obj[key] !== null) {      childrens = parseObject(obj[key])    }    returnArray.push({key: key, children: childrens})  })    return returnArray}const result = parseObject(jsonObject)注意。这对大多数对象都可以正常工作,但您可能需要对巨大的 json 对象进行更多优化
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript