AngularJS中通过查找值为JSON数组对象添加新键
在JSON数组中为匹配条件的对象添加键值对
没问题,这其实是个很常见的JSON处理需求,核心思路就是遍历数组里的每个对象,判断是否符合你设定的匹配规则,符合的话就给它加上新的键值对。我给你用几种常用的技术方案来实现:
1. JavaScript 实现
不管是在浏览器还是Node.js环境,都可以用这种方式:
直接修改原数组
// 你的原始JSON数组 const fruits = [ { "$id": "2025", "ID": 41, "Name": "APPLE" }, { "$id": "2026", "ID": 45, "Name": "MANGO" }, { "$id": "2027", "ID": 48, "Name": "GUAVA" } ]; // 遍历每个对象,匹配条件就添加Price字段 fruits.forEach(fruit => { if (fruit.ID === 45 || fruit.Name === "MANGO") { fruit.Price = 50; } }); // 输出结果 console.log(JSON.stringify(fruits, null, 2));
不修改原数组(生成新数组)
如果想保留原数组不变,可以用map方法返回一个新数组:
const updatedFruits = fruits.map(fruit => { // 匹配条件时,返回包含新字段的新对象;否则返回原对象 return fruit.ID === 45 || fruit.Name === "MANGO" ? { ...fruit, Price: 50 } : fruit; });
2. Python 实现
如果用Python处理JSON,步骤也很清晰:
import json # 假设你拿到的是JSON字符串,先解析成Python列表 json_data = ''' [ { "$id": "2025", "ID": 41, "Name": "APPLE" }, { "$id": "2026", "ID": 45, "Name": "MANGO" }, { "$id": "2027", "ID": 48, "Name": "GUAVA" } ] ''' fruits = json.loads(json_data) # 遍历处理每个字典 for fruit in fruits: if fruit["ID"] == 45 or fruit["Name"] == "MANGO": fruit["Price"] = 50 # 输出处理后的JSON print(json.dumps(fruits, indent=2))
同样,如果不想修改原列表,可以生成新列表:
updated_fruits = [] for fruit in fruits: if fruit["ID"] == 45 or fruit["Name"] == "MANGO": # 复制原字典并添加新键 updated_fruit = fruit.copy() updated_fruit["Price"] = 50 updated_fruits.append(updated_fruit) else: updated_fruits.append(fruit)
3. 命令行用jq工具处理
如果你习惯在终端处理JSON文件,jq是非常好用的工具(需要先安装):
# 假设你的JSON内容在fruits.json文件中,执行以下命令 jq 'map(if .ID == 45 or .Name == "MANGO" then . + {Price: 50} else . end)' fruits.json
这个命令会遍历数组,对匹配条件的对象合并Price:50的键值对,直接输出处理后的结果。
核心逻辑总结
不管用哪种方式,核心都是这三步:
- 遍历JSON数组中的每个对象
- 判断对象是否满足
ID=45或Name=MANGO的条件 - 对满足条件的对象添加
Price:50键值对
内容的提问来源于stack exchange,提问作者WhoAmI
相关产品推荐
相关产品推荐

