首页 > 解决方案 > 在python中合并两个json对象

问题描述

我在python中合并两个json

我正在做

import json

json_obj = json.dumps({"a": [1,2]})
json_obj1 = json.dumps({"a": [3,4]})

json_obj += json_obj1

print(json_obj)

我期待输出为

{"a": [1, 2,3,4]}

但我得到了

{"a": [1, 2]}{"a": [3, 4]}

怎样才能拿到较早的?

标签: pythonjsonpython-3.x

解决方案


在 json 模块中,dumps 将 python 对象转换为字符串,loads 将字符串转换为 python 对象。因此,在您的原始代码中,您只需尝试连接两个 json-string。尝试像这样编写代码:

import json

from collections import defaultdict


def merge_dict(d1, d2):
    dd = defaultdict(list)

    for d in (d1, d2):
        for key, value in d.items():
            if isinstance(value, list):
                dd[key].extend(value)
            else:
                dd[key].append(value)
    return dict(dd)


if __name__ == '__main__':
    json_str1 = json.dumps({"a": [1, 2]})
    json_str2 = json.dumps({"a": [3, 4]})

    dct1 = json.loads(json_str1)
    dct2 = json.loads(json_str2)
    combined_dct = merge_dict(dct1, dct2)

    json_str3 = json.dumps(combined_dct)

    # {"a": [1, 2, 3, 4]}
    print(json_str3)

推荐阅读