使用 Javascript 根据键名将子对象值合并到父键

Merge child object value to parent key based on key name using Javascript

提问人:Debaditya Sen 提问时间:9/2/2023 最后编辑:Debaditya Sen 更新时间:9/3/2023 访问量:51

问:

我有一个大型嵌套的JSON对象,该对象是从XML架构自动生成的。这导致创建多个密钥并将其嵌套在它们内部。children

以下代码片段描述了嵌套。

{
    "attributes" : {
      "name": "xml"
    },
    "children" : [ 
         {
           "children": [
               {
                  "children" :[ 
                       {
                         "attributes":{
                             "min": 1,
                             "max": 2
                          }
                         "children":[1,2,3,4]
                       }
                   ]
               }
            ]
         }
     ]
}

当嵌套的键名都没有任何数据丢失时,我需要将键的最内层值移动到最上面的父项。childrenchildren

{
    "attributes" : {
      "name": "xml"
    },
    "children" : [ // ** Here
         {
           "children": [
               {
                  "children" :[ // Move this whole array **
                       {
                         "attributes":{
                             "min": 1,
                             "max": 2
                          }
                         "children":[1,2,3,4]
                       }
                   ]
               }
            ]
         }
     ]
}

我尝试了以下方法,但这不起作用。

function mergeChildToParent(jsonObj) {
  for (const key in jsonObj) {
    if (jsonObj.hasOwnProperty(key) && typeof jsonObj[key] === "object") {
      if (jsonObj[key].hasOwnProperty("children") && jsonObj[key].value === key) {
        // Push child value to parent and delete child
        jsonObj[key].parentValue = jsonObj[key].value;
        delete jsonObj[key].value;
      }
      mergeChildToParent(jsonObj[key]); // Recurse for nested objects
    }
  }

  return jsonObj;
}
数组嵌 套的 JavaScript 对象

评论

1赞 GrafiCode 9/3/2023
为什么?对象中没有文本属性if (jsonObj[key].hasOwnProperty("value") ....value
1赞 Debaditya Sen 9/3/2023
是的,感谢您指出。那应该是“孩子”。但是我已经尝试了这个值,但它仍然不起作用@GrafiCode

答: 暂无答案