如何合并两个 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 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章