如何使用jQuery为JSON的protocol_body添加新的group节点?
如何向JSON对象的protocol_body中添加新的group?
首先看你提供的原始数据结构:
var data_json = { "protocol": { "protocol_descr": { "protocol_name": "test" }, "protocol_body": { "group": { "group_name": "test group", "position_info": { "position_name": "1", "position_type": "tags", "position_value": "some,value", "data-free":"false", "data-type":"false", "data-optional":"false" } } } } };
你遇到的问题很明确:push()是数组专属的方法,但你的protocol_body是一个普通对象(用{}包裹),所以直接调用data_json.protocol.protocol_body.push()肯定会无效甚至报错。
这里有两种常见的解决方式,你可以根据业务需求选择:
方案1:将protocol_body改为数组(推荐用于需要多个有序group的场景)
如果你的业务逻辑中protocol_body需要容纳多个group,并且需要保持它们的顺序,最好把protocol_body改成数组结构,这样就能用push()轻松添加新元素了:
// 先调整原始结构,把protocol_body改为数组 var data_json = { "protocol": { "protocol_descr": { "protocol_name": "test" }, "protocol_body": [ { "group_name": "test group", "position_info": { "position_name": "1", "position_type": "tags", "position_value": "some,value", "data-free":"false", "data-type":"false", "data-optional":"false" } } ] } }; // 现在可以用push添加新的group data_json.protocol.protocol_body.push({ "group_name": "new test group", "position_info": { "position_name": "2", "position_type": "tags", "position_value": "new,values", "data-free":"true", "data-type":"true", "data-optional":"true" } });
方案2:保持protocol_body为对象,添加新的group属性
如果不需要group的顺序,或者每个group有唯一的标识,可以直接给protocol_body对象添加新的属性来存储新group:
// 基于你原来的结构直接修改 data_json.protocol.protocol_body.group2 = { "group_name": "second test group", "position_info": { "position_name": "2", "position_type": "tags", "position_value": "another,value", "data-free":"true", "data-type":"false", "data-optional":"true" } };
这样修改后,protocol_body就会包含group和group2两个属性,分别对应不同的分组数据。
内容的提问来源于stack exchange,提问作者Madushko
相关产品推荐
相关产品推荐

