在python中合并两个json文件时,如何克服以“\”结尾的额外问题?

2024-06-01 03:11:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图合并两个json文件,但在输出中有一些奇怪的“\”

import json

data1 = {'apple': 'good',"mango": "excellent"}

json_data1 = json.dumps(data1)

data2 = {'mustang': 'good',"camaro": "excellent"}

json_data2 = json.dumps(data2)

final_data = { 'fruit' : str(json_data1), 'car' : str(json_data2) }

json_final = json.dumps(final_data)

print(json_final)

期望值:

{"fruit": "{"apple": "good", "mango": "excellent"}", "car": "{"camaro": "excellent", "mustang": "good"}"}

我得到的是:

{"fruit": "{\"apple\": \"good\", \"mango\": \"excellent\"}", "car": "{\"camaro\": \"excellent\", \"mustang\": \"good\"}"}

如何克服这个问题

另外,在我的实际问题中,我只得到了两个JSON对象,我无法控制其他任何东西


Tags: jsonappledatacarfinalgoodfruitdumps
1条回答
网友
1楼 · 发布于 2024-06-01 03:11:24

如果您的数据是本机Python结构

不要单独对包含的内容进行字符串化或JSON编码。将您的内容保持为纯本机数据结构,并且只编码为JSON一次

否则,当您运行第一个json.dumps()传递时,您将生成一个字符串,当您在包含该字符串的数据结构中调用json.dumps()时,您将生成一个对字符串进行编码的JSON序列,而不是一个对创建该字符串所表示的原始字典进行编码的JSON数据结构

import json

data1 = {'apple': 'good',"mango": "excellent"}
data2 = {'mustang': 'good', "camaro": "excellent"}
final_data = { 'fruit' : data1, 'car' : data2 }
json_final = json.dumps(final_data)

如果您的输入已经是JSON编码的…

安全的方法是在重新编码之前解码成本地结构。即:

json_data1 = '{"mango": "excellent", "apple": "good"}'
json_data2 = '{"camaro": "excellent", "mustang": "good"}'
final_data = { 'fruit': json.loads(json_data1), 'car': json.loads(json_data2) }
json_final = json.dumps(final_data)

不安全的方法是使用字符串串联:

# DANGER: Will produce badly-formed output instead of throwing an exception if input is bad
json_data1 = '{"mango": "excellent", "apple": "good"}'
json_data2 = '{"camaro": "excellent", "mustang": "good"}'
json_final = '{ "fruit": %s, "car": %s }' % (json_data1, json_data2)

相关问题 更多 >