0

目标是将 JSON 转换为 XML
代码读取 JSON.txt,将其转换为 XML 并将其写入 JSON_to_xml.txt。下面的代码在解析时返回一个值错误,给出一个文件有多个根的错误,即使它只有一个根。

import xmltodict
import json
import sys

sys.stdout = open('JSON_to_XML.txt', 'w')
print(json.dumps(xmltodict.unparse(open("JSON.txt", "r").read()))) 
sys.stdout.close()

JSON.txt的内容如下,

{"note": {"to": "Tove", "from": "Jani", "heading": "Reminder", "body": "Dont forget me this weekend!"}}

如果我只是将文件的内容复制到脚本中,如下所示,它会以正确的 XML 格式提供输出。

import xmltodict
import json
                                                                
print(json.dumps(xmltodict.unparse(
    {"note": {"to": "Tove", "from": "Jani", "heading": "Reminder", "body": "Dont forget me this weekend!"}})))

非常感谢您的意见和建议。谢谢你。

4

1 回答 1

0

这里将字典传递给函数,这是正确的方法。

print(json.dumps(xmltodict.unparse({"note": {"to": "Tove", "from": "Jani", "heading": "Reminder", "body": "Dont forget me this weekend!"}})))

但在这里 read() 的结果是一个 JSON 字符串,并被传递到函数中。因此,在传递之前应该将其转换为字典。

import json
import sys

sys.stdout = open('JSON_to_XML.txt', 'w')
print(json.dumps(xmltodict.unparse(open("JSON.txt", "r").read()))) 
sys.stdout.close()

所以解决方案是,

import json
import sys

# JSON to XML

f = open("JSON.txt")

sys.stdout = open('JSON_to_XML.txt', 'w')
print(json.dumps(xmltodict.unparse(json.load(f))))
sys.stdout.close()

谢谢你,迈克:https ://github.com/mpf82的帮助。

于 2020-10-12T12:28:31.997 回答