我有一个 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天。:-(
1 回答
慕容森
TA贡献1853条经验 获得超18个赞
在这种情况下,递归可能是最佳选择。
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 对象进行更多优化
添加回答
举报
0/150
提交
取消
