如何向JSON数组中的每个对象添加一个新的键值对,如下所示?我尝试使用下面的代码,但结果是分开的,而不是在同一个原始数组中。
import json
json_var = '''{
"information" : {
"info_id" : "8878",
"info_name" : "Stackoverflow"
},
"env" : {
"env_name" : "UAT",
"env_type" : "Staging"
},
"services" : [
{
"service_name" : "stack1",
"service_version" : "1"
},
{
"service_name" : "stack2",
"service_version" : "2"
},
{
"service_name" : "stack3",
"service_version" : "3"
}
]
}'''
y = {"pin":110096}
entry = json.loads(json_var)
for i in entry['services']:
i.update(y)
print(json.dumps(i))
实际输出:
{"service_name": "stack1", "service_version": "1", "pin": 110096}
{"service_name": "stack2", "service_version": "2", "pin": 110096}
{"service_name": "stack3", "service_version": "3", "pin": 110096}
预期输出:
[
{"service_name": "stack1",
"service_version": "1",
"pin": 110096
},
{"service_name": "stack2",
"service_version": "2",
"pin": 110096
},
{"service_name": "stack3",
"service_version": "3",
"pin": 110096
}
]
请告知如何修改上述代码或提供新代码以实现预期输出。
唯一的问题是print()
语句的位置。它应该在for
循环之外,并且您应该打印entry['services']
而不是i
。这允许您一次打印所有更新的条目,而不是一次打印一个。
y = {"pin":110096}
entry = json.loads(json_var)
for i in entry['services']:
i.update(y)
print(json.dumps(entry['services']))
该输出:
[{"service_name": "stack1", "service_version": "1", "pin": 110096},
{"service_name": "stack2", "service_version": "2", "pin": 110096},
{"service_name": "stack3", "service_version": "3", "pin": 110096}]