簡體   English   中英

查找並更新嵌套的JSON值

[英]Find and update nested JSON value

我需要從嵌套的json對象中查找和更新json對象。 考慮原始的json對象。

  var originaldata=[
    {
    "sc_iden": "331",
    "sc_name": "Scene 1",
    "sc_type": "",
    "sc_status": "Draft",
    "sc_owner": "",
    "children": [
        {
            "sc_iden": "332",
            "Sc_name": "Scene1.1",
            "sc_type": "",
            "sc_status": "Draft",
            "sc_priority": "3",
            "sc_owner": "",
            "children": []
        }
    ]
},
{
    "sc_iden": "334",
    "sc_name": "Scene2",
    "sc_type": "",
    "sc_status": "Draft",
    "sc_priority": "2",
    "sc_owner": "",
    "children": []
}]

從originaldata(JSON)查找以下findUpdate記錄並更新其值。

    var findUpdate =  {
            "sc_iden": "332",
            "Sc_name": "My Scene",
            "sc_type": "New Type",
            "sc_status": "Opened",
            "sc_priority": "5",
            "sc_owner": "Admin",
            "children": []
        }

基於sc_iden =“ 332”,使用jquery或angularjs搜索原始數據並更新新值(findUpdate)。

檢查控制台輸出(在示例中僅更改了Sc_name ):

 var originaldata=[ { "sc_iden": "331", "sc_name": "Scene 1", "sc_type": "", "sc_status": "Draft", "sc_owner": "", "children": [ { "sc_iden": "332", "Sc_name": "Scene1.1", "sc_type": "", "sc_status": "Draft", "sc_priority": "3", "sc_owner": "", "children": [] } ] }, { "sc_iden": "334", "sc_name": "Scene2", "sc_type": "", "sc_status": "Draft", "sc_priority": "2", "sc_owner": "", "children": [] }]; var findUpdate = { "sc_iden": "332", "Sc_name": "My Scene", "sc_type": "New Type", "sc_status": "Opened", "sc_priority": "5", "sc_owner": "Admin", "children": [] } for (i in originaldata) { var obj = originaldata[i]; if (obj['sc_iden'] == '332') { obj['Sc_name'] = findUpdate['Sc_name']; //... } else { for (m in obj['children']) { var k = obj['children'][m]; if (k['sc_iden'] == '332') { k['Sc_name'] = findUpdate['Sc_name']; //... } } } } console.log(originaldata); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

看一下這個矮子

var update = function(jsonArray, updatedJson) {

  if (jsonArray.length !== 0) {
    jsonArray.forEach(function(obj) {
      if (obj.sc_iden === updatedJson.sc_iden) {
        obj.sc_name = updatedJson.sc_name;
        //....update
      } else {
        //try to update children
        update(obj.children, updatedJson);
      }
    });
  }
};

它將修改原始數據,因此如果您仍然需要,請保留一份副本。

暫無
暫無

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

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