javascript - JSON 对象 - 递归地更改所有子项的属性名称

标签 javascript json

我有以下 json 对象。

myJsonObj = {  
   "name":"Laptop",
   "type":"hardware computer laptop",
   "forward":[  
      {  
         "name":"Depends On",
         "forward":[  
            {  
               "name":"test asset 1",
               "type":"hardware",
               "link":"somelink"
            }
         ]
      },
      {  
         "name":"somename",
         "forward":[  
            {  
               "name":"test asset 5",
               "type":"hardware",
               "link":"somelink"
            }
         ]
      }
   ],
   "inverse":[  
      {  
         "name":"somename",
         "inverse":[  
            {  
               "name":"test asset 4",
               "ciTypeCls":"hardware",
               "link":"somelink"
            },
            {  
               "name":"test asset 1",
               "ciTypeCls":"hardware",
               "link":"somelink"
            }
         ]
      },
      {  
         "name":"somename",
         "inverse":[  
            {  
               "name":"test asset 1",
               "ciTypeCls":"hardware",
               "link":"somelink"
            }
         ]
      }
   ]
}

我正在尝试将属性名称 forward 更改为 children

以下是我的代码

myJsonObj = {
  "name": "Laptop",
  "type": "hardware computer laptop",
  "forward": [{
    "name": "Depends On",
    "forward": [{
      "name": "test asset 1",
      "type": "hardware",
      "link": "somelink"
    }]
  }, {
    "name": "somename",
    "forward": [{
      "name": "test asset 5",
      "type": "hardware",
      "link": "somelink"
    }]
  }],
  "inverse": [{
    "name": "somename",
    "inverse": [{
      "name": "test asset 4",
      "ciTypeCls": "hardware",
      "link": "somelink"
    }, {
      "name": "test asset 1",
      "ciTypeCls": "hardware",
      "link": "somelink"
    }]
  }, {
    "name": "somename",
    "inverse": [{
      "name": "test asset 1",
      "ciTypeCls": "hardware",
      "link": "somelink"
    }]
  }]
}

jQuery.each(myJsonObj, function(e) {
  e.children = e.forward;
  delete e.forward;
});

console.log(myJsonObj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

它似乎不起作用,我做错了什么?

最佳答案

试试这个:

 jQuery.each(myJsonObj.forward, function(i , item) {
     //Nested forward
     item.children = item.forward;
     delete item.forward;
});
   //PARENT forward
    myJsonObj.children = myJsonObj.forward;
    delete myJsonObj.forward;

JSFiddle https://jsfiddle.net/xbkp10Ly/

关于javascript - JSON 对象 - 递归地更改所有子项的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35150301/

相关文章:

php - 访问数组中的 JSON

javascript - 如何制作三级下拉菜单?

javascript - 从id中删除表内容

javascript - 有什么方法可以读取在 JS 中以编程方式打印到控制台的内容吗? (供测试用)

java - 如何在 JSONObject 中保留 LinkedHashMap 排序?

javascript - 根据对象数组中的第一个 "row"重命名 JSON 键

android - 将 Json 字符串解析为 Json 数组时出错

ios - 填充 TableView IOS 的单元格时出现 NSException

javascript - 在 Javascript 中使用 Java

javascript - 在 JavaScript 中转换为 bool 值的更好方法是什么?