今天用json.dumps写入json文件时出现了,date is not JSON serializable的错误,无法正常序列化date对象,这是我们需要自定义encoding方法来解决一些非JSON认识的对象,我们用date作为例子,通用模板改一下就行了
class DateEnconding(json.JSONEncoder):
def default(self, o):
if isinstance(o, datetime.date):
return o.strftime('%Y/%m/%d')
dumps是需要引入
lines = json.dumps(dict(item), cls=DateEnconding)
注意:json默认支持的类型只有下面几种,其他的类型,比如自定义的类或者date类型,都需要自定义jsonEncoder。
Supports the following objects and types by default:
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+