用 Python 合并 JSON 数据

mrg*_*gou 2 python json

作为 Python 程序的一部分,我想合并包含相同结构化数据的 JSON 对象。例如:

{
    "responseStatus": "SUCCESS",
    "responseDetails": {
        "total": 5754,
    },
    "data": [
        {
            "id": 1324651
        },
        {
            "id": 5686131
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是将我的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}]})
Run Code Online (Sandbox Code Playgroud)

我认为执行:

thejson1["data"].append(thejson2["data"])
Run Code Online (Sandbox Code Playgroud)

将 thejson1 扩展为:

{
    "responseStatus": "SUCCESS",
    "responseDetails": {
        "total": 5754,
    },
    "data": [
        {
            "id": 1324651
        },
        {
            "id": 5686131
        },
        {
            "id": 2165735
        },
        {
            "id": 2133256
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但它所做的是将json2数据作为数组添加到json1的数据数组中:

{
    "responseStatus": "SUCCESS",
    "responseDetails": {
        "total": 5754,
    },
    "data": [
        {
            "id": 1324651
        },
        {
            "id": 5686131
        },
        [
            {
                "id": 2165735
            },
            {
                "id": 2133256
            }
        ]
    ]
}
Run Code Online (Sandbox Code Playgroud)

那么,我做错了什么?看起来 append 添加了第二个 JSON 对象的数据数组而不是其内容,但请注意,我无法事先知道我的 JSON 输入中“数据”数组的内容,因此我无法编写专门的代码在“id”对象中循环以将它们一一添加。

提前致谢!

R。

abc*_*ccd 7

您正在寻找extend,而不是append

thejson1["data"].extend(thejson2["data"])
Run Code Online (Sandbox Code Playgroud)

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]
Run Code Online (Sandbox Code Playgroud)