如何在Python程序中合并结构相同的JSON对象?
合并JSON对象的data数组方案
嘿,这个需求其实挺常见的,咱们一步步来轻松搞定它~
首先得纠正你代码里的一个小问题:json.loads()函数的参数得是JSON格式的字符串,而不是直接传Python字典。如果是直接在代码里定义这两个JSON结构,直接用Python字典赋值就行;如果是从文件/接口拿到的JSON字符串,才需要用json.loads()解析成字典。
完整实现步骤
假设我们有两个结构一致的JSON对应的Python字典:
- 第一个是
thejson1(你的原始数据) - 第二个是
thejson2(需要合并的目标数据)
我们要做的就是把thejson2["data"]里的所有元素追加到thejson1["data"]里,甚至可以顺便更新responseDetails里的total数值(毕竟合并后总数应该是原来的总数加上新数据的条数)。
看下面的完整代码:
import json # 方式1:直接定义Python字典(如果是硬编码的话) thejson1 = { "responseStatus": "SUCCESS", "responseDetails": {"total": 5754}, "data": [{"id": 1324651}, {"id": 5686131}] } thejson2 = { "responseStatus": "SUCCESS", "responseDetails": {"total": 2}, "data": [{"id": 987654}, {"id": 123456}] } # 核心:合并data数组 thejson1["data"].extend(thejson2["data"]) # 可选:更新total数值(如果需要的话) thejson1["responseDetails"]["total"] += len(thejson2["data"]) # 如果需要把合并后的字典转回JSON字符串 merged_json_str = json.dumps(thejson1, indent=4) print(merged_json_str)
代码解释
list.extend()方法:这是Python列表的内置方法,能把另一个列表的所有元素一次性追加到当前列表末尾,正好符合我们合并数组的需求。- 更新
total:如果你的业务需要这个数值保持准确,就加上这一步,用原来的总数加上新数据的长度就行。 json.dumps():如果最后需要输出JSON格式的字符串,用这个方法,indent=4是为了让输出的字符串更美观易读。
补充:如果是从JSON字符串解析的情况
如果你的两个JSON是从文件或者接口获取的字符串,那先解析成字典再操作:
json_str1 = '''{"responseStatus": "SUCCESS", "responseDetails": {"total": 5754}, "data": [{"id": 1324651}, {"id": 5686131}]}''' json_str2 = '''{"responseStatus": "SUCCESS", "responseDetails": {"total": 2}, "data": [{"id": 987654}, {"id": 123456}]}''' thejson1 = json.loads(json_str1) thejson2 = json.loads(json_str2) # 之后的合并操作和上面一样 thejson1["data"].extend(thejson2["data"])
这样操作下来,你就能得到合并后的JSON对象啦~
内容的提问来源于stack exchange,提问作者mrgou
相关产品推荐
相关产品推荐

