如何合并两个 JSON 文件? [复制]

Posted

技术标签:

【中文标题】如何合并两个 JSON 文件? [复制]【英文标题】:How to Combine two JSON files? [duplicate] 【发布时间】:2017-11-17 15:47:43 【问题描述】:

我有两个 json 对象,我正在想办法在 python 中合并它们

y="success":"true"
x="0":"740","1":"747","2":"883","3":"750","4":"769"

我需要以下方式的最终结果

"success":"true",
  "data":
       "0":"740",
       "1":"747",
       "2":"883", 
       "3":"750", 
       "4":"769"
         
              

我正在尝试附加它,但它显示了一些错误。帮我写python代码。

【问题讨论】:

这些只是 2 个字典。为什么不只是y['data'] = x 我尝试时显示以下错误 'str' 对象不支持项目分配 我尝试将 x 附加到 y 中,但不起作用!:( 如果它们是 json(这意味着它们可能是字符串),那么首先使用 json.loads 将它们都转换为 python dict,然后合并这些 dict,最后使用 json.dumps 将它们转换回 json 【参考方案1】:

您的输入似乎是字符串而不是字典。您需要使用json.loads 将它们转换为字典:

import json

y = '"success":"true"'
x = '"0":"740","1":"747","2":"883","3":"750","4":"769"'

res = json.loads(y)
res['data'] = json.loads(x)

print(res)

如果您需要再次以字符串形式输出,请使用json.dumps:

res_str = json.dumps(res)

如果您坚持对输出进行排序:

res_str = json.dumps(res, sort_keys=True)

【讨论】:

获取输出为 "data": "1": "747", "0": "740", "3": "750", "2": "883", " 4": "769", "success": "true",为什么 1 出现在 0 前面? 字典是无序的。例如,请参阅this。 因为python dicts,根据定义是没有顺序的。如果您需要订购 dict,您可以按键对其进行排序或使用 ordereddict 之类的东西,在这种情况下,转换当然会变得更加复杂。 @SandeepRajamahendravarapu:添加了一种使用json.dumps 对输出进行排序的方法。但这只会涉及json字符串;不是字典本身。【参考方案2】:

你可以简单地做y["data"] = x

y="success":"true"
x="0":"740","1":"747","2":"883","3":"750","4":"769"

y["data"] = x

【讨论】:

错误:'str' 对象不支持项目分配 在这种情况下,请查看this other answer。【参考方案3】:

我假设它们是字符串而不是 python 字典。所以这是你可以做的

y='"success":"true"'
x='"0":"740","1":"747","2":"883","3":"750","4":"769"'

import json
dict1 = json.loads(x)
dict2 = json.loads(y)

dict2['data'] = dict1

result = json.dumps(dict2)
print result

上面的代码给你这个

"data": "1": "747", "0": "740", "3": "750", "2": "883", "4": "769", "success": "true"

如果您想保留 json 字符串中的结构,可以查看 this link。这会使解码稍微复杂一些。

【讨论】:

“1”:“747”,“0”:“740”,“3”:“750”,“2”:“883”,“4”:“769”,“ data": "success": "true" 输出错误! 稍微更改了代码以适应输出。我还提到了在我对其他答案的评论中使用直接从 json 字符串创建的有序字典的链接。如果有帮助,请告诉我。

以上是关于如何合并两个 JSON 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jq将两个文件中的数组合并到一个数组中?

如何合并两个 JObject? [复制]

如何将多个文件进行合并?

如何合并两个文本文件?

如何在 AWS Glue pyspark 脚本中合并两个节点

在python中合并两个json文件