【发布时间】:2014-09-15 19:53:21
【问题描述】:
我正在将 XML 文件转换为 JSON 文件。我通过打开 xml 来做到这一点,使用 xmltodict 模块,然后使用 .get 方法将树遍历到我想要的级别。这一层是叶子的父母。然后我在某个条件下检查每个task 的某些叶子是否为真,如果是,那么我使用json.dumps() 并将其写入文件。问题是(我认为这就是它的根源)当我只将一个 JSON 对象附加到文件时,它不会在对象末尾附加逗号,因为它认为它是唯一的对象。我尝试通过在每个 JSON 对象的末尾附加一个“,”来解决这个问题,但是当我尝试使用 json.loads() 方法时,它给了我一个错误,说“没有 JSON 对象可以被解码”。但是,当我手动将“[”和“]”附加到文件时,它不会给我一个错误。我的代码如下,如果您有任何帮助/建议,我将不胜感激。
def getTasks(filename):
f = open(filename, 'r')
a = open('tasksJSON', 'w')
a.write('[')
d = xmltodict.parse(f)
l = d.get('Project').get('Tasks').get('Task')
for task in l:
if (task['Name'] == 'dinner'): #criteria for desirable tasks
j = json.dumps(task)
a.write (str(j))
a.write(',')
a.write(']')
f.close()
a.close()
这有效,并将所有内容放在tasksJSON,但就像我说的,当我打电话时
my_file = open('tasksJSON', 'r')
data = json.load(my_file) # LINE THAT GIVES ME ERROR
我收到一个错误提示
ValueError: No JSON object could be decoded
输出文件包含:
[{"UID": "4", "ID": "14", "Name": "Design"},{"UID": "5", "ID": "15", "Name": "Basic Skeleton"}]
^
this is the comma I manually inserted
【问题讨论】:
-
那不是你的输出文件。如果是,它会工作,@ 987654321@。您的代码生成的实际输出将在末尾有一个额外的逗号,这会给您一个错误as you can see here。
标签: python json python-2.7 dictionary