Python 将JSON写入文件-格式错误?
在Python 将JSON写入文件-格式错误?,python,json,Python,Json,在Python中,我试图获取一个XML文件,处理它,然后将数据输出到JSON。XML处理工作正常,但我在正确格式化JSON时遇到了问题。输出文件看起来更像一个包含字典的列表,这很有意义,因为代码实际上就是这样做的。如何使其成为正确的JSON文件 filename = 'data.json' d = [] for elem in ET.fromstring(data).findall('.//table/row'): field1 = elem.get('field1')
Python
中,我试图获取一个XML
文件,处理它,然后将数据输出到JSON
。XML处理工作正常,但我在正确格式化JSON时遇到了问题。输出文件看起来更像一个包含字典的列表,这很有意义,因为代码实际上就是这样做的。如何使其成为正确的JSON文件
filename = 'data.json'
d = []
for elem in ET.fromstring(data).findall('.//table/row'):
field1 = elem.get('field1')
field2 = elem.get('field2')
field3 = elem.get('field3')
field4 = elem.get('field4')
l = {'field1' : field1,
'field2' : field2,
'field3' : field3,
'field4' : field4}
d.append(l)
f_out = open(filename, 'w')
json.dump(d, f_out)
f_out.close()
输出文件如下所示:
[{"field1": "field1", "field2": "field2", "field3": "field3", "field4": "field4"}, ... {"field1": "field1", "field2": "field2", "field3": "field3", "field4": "field4"}]
当我期望它看起来像:
{"field1": "field1", "field2": "field2", "field3": "field3", "field4": "field4"}, ... {"field1": "field1", "field2": "field2", "field3": "field3", "field4": "field4"}
json.dump()
例如:
json.dump({'1': 2, '3': 4}, f_out, indent=4, separators=(',', ': '))
结果:
{
"1": 2,
"3": 4
}
{"field2": "b", "field3": "c", "field1": "a", "field4": "d"}
{"field2": "2", "field3": "3", "field1": "1", "field4": "4"}
请参见根据,Redshift COPY命令在其输入文件中需要一个JSON对象序列,在其可选的JSONPath文件中需要一个JSON对象序列
要创建这样的序列,请多次调用json.dump()
:
from xml.etree import ElementTree as ET
import json
data = '''
<root><table>
<row field1="a" field2="b" field3="c" field4="d"/>
<row field1="1" field2="2" field3="3" field4="4"/>
</table></root>'''
filename = 'data.json'
f_out = open(filename, 'w')
for elem in ET.fromstring(data).findall('.//table/row'):
field1 = elem.get('field1')
field2 = elem.get('field2')
field3 = elem.get('field3')
field4 = elem.get('field4')
l = {'field1' : field1,
'field2' : field2,
'field3' : field3,
'field4' : field4}
json.dump(l, f_out)
f_out.write('\n')
f_out.close()
当您尝试添加json.dump时,您的代码看起来很好。我怀疑输出是“正确的JSON文件”。请显示您从该程序获得的输出,以及您期望的输出。您正在编写d
,这是一个列表,用JSON表示为[item1,item2,item3]
@JohnGordon也许这是一个更好的问题-如果我需要输出格式正确的JSON,实现这一点的合适方法是什么?您正在编写的文件是正确的JSON。是不是有别的东西(也许是另一个程序)告诉你它错了?