根据已有参数值向json中添加参数

Add parameter to json based on existing parameter value

本文关键字:参数 json 添加      更新时间:2023-09-26
{
    "data": [{
        "prop": "prop1",
        "template": "template1",
        "group": [{
            "group_name": "Group 1",

        }, {
            "group_name": "Group 2",

        }, {
            "group_name": "Group 3",

        }]
    }]
}

在上面的json中,我需要基于group_name推送group_no。即,如果group_name等于Group 1,则group_no等于10。并形成以下json。如何更新现有的json?

{
    "data": [{
        "prop": "prop1",
        "template": "template1",
        "group": [{
            "group_name": "Group 1",
            "group_no": "10"
        }, {
            "group_name": "Group 2",
            "group_no": "11"
        }, {
            "group_name": "Group 3",
            "group_no": "12"
        }]
    }]
}

这样做

var json = {
    "data": [{
        "prop": "prop1",
        "template": "template1",
        "group": [{
            "group_name": "Group 1",
        }, {
            "group_name": "Group 2",
        }, {
            "group_name": "Group 3",
        }]
    }]
};
json.data[0].group.forEach(function(d){ 
  if(d.group_name=="Group 1") 
    d.group_no = 10; 
  else if(d.group_name=="Group 2") 
    d.group_no = 11; 
  else 
    d.group_no = 12; 
});
alert(JSON.stringify(json));

不确定不循环是什么意思,因为无论如何都需要循环遍历它。但是你想要的是这样做的:

data[0].group = data[0].group.map(function(el) {
    switch (el.group_name) {
        case 'Group 1': return el.group_no = '10';
        case 'Group 2': return el.group_no = '11';
        ...
        default: return el;
    }
}); 

如果您的JSON对象实际上是文本,您首先使用var parsed = JSON.parse(data);并使用parsed而不是data。后记你可以data = JSON.stringify(parsed);