簡體   English   中英

如何將嵌套的 json 轉換為 Javascript 中的 object 數組?

[英]How to Convert nested json to array of object in Javascript?

我有一個像這樣的深層嵌套 object :

{
  'name_1': 'val',
  'name_2': 'val',
  'name_3': {
    'name_4': {
      'name_5': {
        'name_6': 'val',
        'name_7': 'val',
        'name_8': {
          'name_9': 'val'
        }
      }
    }
  }
}

這里的鍵可以是任何東西,而不是 name_1、name_2、name_3...等(將鍵命名為 name_1、name_2.. 只是為了快速理解)

我想將上面的 json 轉換為下面提到的格式的對象數組

[
  { "id": "1", "name": 'name_1: val', "parent_id": "0"},
  { "id": "2", "name": 'name_2: val', "parent_id": "0"},
  { "id": "3", "name": 'name_3', "parent_id": "0"},
  { "id": "4", "name": 'name_4', "parent_id": "3"},
  { "id": "5", "name": 'name_5', "parent_id": "4"},
  { "id": "6", "name": 'name_6: val', "parent_id": "5"},
  { "id": "7", "name": 'name_7: val', "parent_id": "5"},
  { "id": "8", "name": 'name_8', "parent_id": "5"},
  { "id": "9", "name": 'name_9: val', "parent_id": "8"},
]

任何幫助將不勝感激!

您可以采用迭代和遞歸的方法。 id存儲在 object 中,以保持相同的 object 引用,這允許在所有嵌套遞歸調用中使用它。)

 function flat(object, id = { id: 0 }, parent_id = 0) { return Object.entries(object).reduce((r, [k, v]) => { var name = k + (typeof v === 'string'? ': ' + v: ''); r.push({ id: id.id++, name, parent_id }); if (v && typeof v === 'object') r.push(...flat(v, id, id.id)); return r; }, []); } var data = { name_1: 'val', name_2: 'val', name_3: { name_4: { name_5: { name_6: 'val', name_7: 'val', name_8: { name_9: 'val' } } } } }, result = flat(data); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM