[英]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.