问题描述
目标是将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","body": "Dont forget me this weekend!"}})))
非常感谢您的评论和建议。谢谢。
解决方法
在这里,将字典传递给函数,这是正确的方法。
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帮忙。