慕標(biāo)琳琳
2022-11-27 17:12:13
我有一個 JSON 對象,其中包含無限級別的對象。我想構(gòu)造一個 JSON 數(shù)組,其中它包含一個鍵中的第一個鍵和另一個鍵中的所有關(guān)聯(lián)值。例如,我擁有的 JSON 如下,{ doingnow: { "action items": { "open": { "child"....}, "In Progress": { "child"....}, "Completed": { "child"....} }, "financial": { "q1": { "jan 2017": { "child"... }, "feb 2017": {....} }, q2: {... }, q3: {... },....} }, finished: { "discarded": {... } }, .........}但是我期待的實(shí)際 JSON 數(shù)組[{ 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貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超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)
注意。這對大多數(shù)對象都可以正常工作,但您可能需要對巨大的 json 對象進(jìn)行更多優(yōu)化
添加回答
舉報(bào)
0/150
提交
取消