如何向JSON数组中的每个对象添加一个新的键值对



如何向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}]

最新更新