如何用Python3通过Name过滤动态更新JSON对象并放回原数组
Python3 实现JSON数组中指定对象的定位与修改
需求说明
现有存储JSON数组字符串的变量test,需通过Name=John过滤定位对应对象(未知索引),修改该对象的字段后放回原数组对应位置。
实现步骤与代码
- 导入json模块:Python内置的
json模块用于完成JSON字符串与Python数据结构的互相转换。 - 解析JSON字符串:将
test字符串转换为Python列表(数组中的每个元素对应一个字典)。 - 定位目标对象:遍历列表,匹配
Name值为John的字典。 - 修改目标字段:更新指定字段的值(修正原需求中
Gender字段的引号缺失问题)。 - (可选)转回JSON字符串:将修改后的Python列表重新转为格式化的JSON字符串。
完整代码示例:
import json # 原JSON数组字符串 test='''[ { "Name": "James", "Mobile": 12345678, "Gender": "Male", "Boolean": true, "Pet": "cat" }, { "Name": "John", "Mobile": 1234567875, "Gender": "Male", "Boolean": true, "Pet": "rat" }, { "Name": "Jennifer", "Mobile": 1234567890, "Gender": "Female", "Boolean": true, "Pet": "Dog" }, { "Name": "Julia", "Mobile": 1234567890, "Gender": "Female", "Boolean": true, "Pet": "Dog" }, { "Name": "Jeff", "Mobile": 9871234567890, "Gender": "Male", "Boolean": true, "Pet": "Fish" }, { "Name": "Jones", "Mobile": 79871234567890, "Gender": "Female", "Boolean": true, "Pet": "Parrot" } ]''' # 解析JSON字符串为Python列表 data = json.loads(test) # 遍历找到目标对象并修改 for item in data: if item["Name"] == "John": item["Name"] = "Sarah" item["Gender"] = "Female" item["Pet"] = "rabbit" # 找到目标后终止循环,避免无效遍历 break # (可选)将修改后的列表转回格式化的JSON字符串 updated_test = json.dumps(data, indent=2) print(updated_test)
关键说明
json.loads():将JSON字符串解析为可直接操作的Python列表/字典,修改操作直接作用于原列表中的元素,无需额外处理位置。- 遍历匹配时,找到目标对象后使用
break退出循环,提升执行效率。 json.dumps()的indent=2参数用于生成格式化的JSON字符串,便于阅读。
内容的提问来源于stack exchange,提问作者devops-admin
相关产品推荐
相关产品推荐

