如何用Python正确修改JSON?已实现删除,需完成新数据插入
嘿,你已经搞定了删除id为14的条目这一步,接下来只需要添加插入新数据的操作就能得到你想要的目标JSON啦!我帮你把代码补充完整,顺便优化下删除逻辑让它更简洁:
完整实现代码
#!/usr/bin/python import json # 原始JSON字符串 x = '{"uuid":"789ce6ed-ec0f-418b-8fad-6ba64cb8bd70","assetTemplate":[{"id":14,"name":"Template-conectividad"},{"id":54,"name":"Template-discos-agata"},{"id":17,"name":"Template-servidor-linux"}],"info":null}' y = json.loads(x) # 1. 删除id为14的assetTemplate条目(优化写法) y["assetTemplate"] = [item for item in y["assetTemplate"] if item['id'] != 14] # 2. 插入新的条目到assetTemplate列表末尾 new_template = {"id": 85, "name": "Template-conectividad-test"} y["assetTemplate"].append(new_template) # 输出格式化后的修改结果 updated_json = json.dumps(y, indent=4) print(updated_json)
代码说明
- 删除操作优化:用列表推导式替代了原来的循环删除写法,更简洁易读,同时避免了循环中修改列表长度可能引发的索引问题。
- 插入新数据:直接创建目标格式的字典,然后用
append()方法将其添加到assetTemplate列表的末尾,完全匹配你想要的目标JSON结构。
运行结果
执行代码后会输出格式化后的目标JSON:
{ "uuid": "789ce6ed-ec0f-418b-8fad-6ba64cb8bd70", "assetTemplate": [ { "id": 54, "name": "Template-discos-agata" }, { "id": 17, "name": "Template-servidor-linux" }, { "id": 85, "name": "Template-conectividad-test" } ], "info": null }
内容的提问来源于stack exchange,提问作者Kevimuxx69
相关产品推荐
相关产品推荐

