我想将所有datetime对象转换为字符串,以便JSON文件输出。我得到一个数据列表,我使用编码器和输出:
class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, (datetime.datetime, datetime.date, datetime.time)):
return obj.isoformat()
elif isinstance(obj, datetime.timedelta):
return (datetime.datetime.min + obj).time().isoformat()
return super(DateTimeEncoder, self).default(obj)
def write_to_file(data_list):
encoder = datetime_encoder.DateTimeEncoder()
for record in data_list:
encoder.encode(record)
with open('data.json', 'w') as fout:
json.dumps(data_list, fout)
示例数据列表:
[
{
'field1': 'foo',
'field2': 'fang',
'fielda': 0,
'fieldb': 2020-10-10 12:00:00
},
{
'field1': 'ab',
'field2': 'cd',
'fielda': 1,
'fieldb': 2020-10-10 12:00:00
},
...
]
问题是,这个编码器没有进行适当的编码,而且我还遍历了每个记录,如果数据列表特别大,那么这些记录是不可伸缩的。我通过psycopg2接受数据,所以也许我可以对传入的任何数据执行编码,而不是事后解析
您可以尝试以下方法:
编辑:保存到文件可以通过以下方式完成:
如评论中所述,您可以在选择和/或让postgres为您创建JSON时更改数据类型。
仅显示了3个选项,无需在Python中转换数据即可进行选择:
输出:
相关问题 更多 >
编程相关推荐