作为Python程序的一部分,我想合并包含相同结构化数据的JSON对象。例如:
{
"responseStatus": "SUCCESS",
"responseDetails": {
"total": 5754,
},
"data": [
{
"id": 1324651
},
{
"id": 5686131
}
]
}
我想要做的是将section对象的数据数组的内容添加到我的第一个对象的数据数组中。
所以,假设:
thejson1 = json.loads({"responseStatus": "SUCCESS","responseDetails": {"total": 5754,},"data": [{"id": 1324651},{"id": 5686131}]})
thejson2 = json.loads({"responseStatus": "SUCCESS","responseDetails": {"total": 1234,},"data": [{"id": 2165735},{"id": 2133256}]})
我以为执行:
thejson1["data"].append(thejson2["data"])
将thejson1扩展为:
{
"responseStatus": "SUCCESS",
"responseDetails": {
"total": 5754,
},
"data": [
{
"id": 1324651
},
{
"id": 5686131
},
{
"id": 2165735
},
{
"id": 2133256
}
]
}
但它的作用是将thejson2数据作为数组添加到json1的数据数组中:
{
"responseStatus": "SUCCESS",
"responseDetails": {
"total": 5754,
},
"data": [
{
"id": 1324651
},
{
"id": 5686131
},
[
{
"id": 2165735
},
{
"id": 2133256
}
]
]
}
那么,我做错了什么?看起来append会添加第二个JSON对象的数据数组而不是其内容,但请注意,我事先无法知道"数据的内容"在我的JSON输入中的数组,所以我不能编写特别循环在" id"对象逐个添加。
提前致谢!
R上。
答案 0 :(得分:2)
您正在寻找extend
,而不是append
。
thejson1["data"].extend(thejson2["data"])
append
接受单个参数并将其插入到结尾。 extend
通过将参数列表中的所有单个值添加到结尾来扩展列表。
# example:
a=[1, 2, 3]
b = a[:].append([4, 5])
# b = [1, 2, 3, [4, 5]]
c = a[:].extend([4, 5])
# c = [1, 2, 3, 4, 5]
答案 1 :(得分:1)
thejson1 = {"responseStatus": "SUCCESS","responseDetails": {"total": 5754,},"data": [{"id": 1324651},{"id": 5686131}]}
thejson2 = {"responseStatus": "SUCCESS","responseDetails": {"total": 1234,},"data": [{"id": 2165735},{"id": 2133256}]}
thejson1["data"] += thejson2["data"]
<强>输出:强>
{'responseDetails': {'total': 5754}, 'data': [{'id': 1324651}, {'id': 5686131}, {'id': 2165735}, {'id': 2133256}], 'responseStatus': 'SUCCESS'}
您还可以使用+=
进行扩展。