json编码器使用singledispatch模式而不是json encoder类覆盖
json-encoder的Python项目详细描述
- json编码器使用singledispatch pattern而不是json encoder类覆盖。
- 不再有json.dumps(data,cls=myjsonencoder)无处不在。
- 带有时间、日期、日期时间、uuid和十进制的默认序列化
- 易于使用,易于更改序列化行为
- 对任何json实现json、simplejson、ujson..
- 它将json浮点数解析为十进制对象,以防止python浮点数精度问题
安装
$ pip install json-encoder
快速启动
使用“json_encoder.json”而不是默认的python json:
from json_encoder import json result = json.dumps(data)
配置
选择json实现:
# simplejson library is used as default json implementation if present # otherwise standard python json implementation is used # to use other json implementation globally, do: import ujson from json_encoder import use_json_library use_json_library(ujson)
要更改具体调用的json实现,请执行以下操作:
from json_encoder import json import simplejson result = json.dumps(data, json=simplejson)
要使对象json可序列化,请执行以下操作:
# example how to make python fraction object json serializable from fractions import Fraction from json_encoder.encoder import json_encoder @json_encoder.register(Fraction) def encode_fraction(obj): return '{}/{}'.format(obj.numerator, obj.denominator)
覆盖json-encoder.encoder中定义的json序列化程序行为:
from uuid import UUID from six import text_type from json_encoder.encoder import json_encoder @json_encoder.register(UUID) def encode_uuid(obj): return text_type(obj).replace('-', '')
要求
- singledispatch>;=3.4.0.3仅适用于python版本<;3.4