JsonCustomEncoder#
- class astropy.utils.misc.JsonCustomEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[源代码]#
基类:
JSONEncoder
支持JSON默认编码器不支持的数据类型。
这包括:
Numpy数组或数字
复数
集合
字节
astropy.UnitBase
astropy.Quantity
实例
>>> import json >>> import numpy as np >>> from astropy.utils.misc import JsonCustomEncoder >>> json.dumps(np.arange(3), cls=JsonCustomEncoder) '[0, 1, 2]'
jsonEncoder的构造函数,具有合理的默认值。
如果skipkeys为false,则尝试对非str、int、float或none的键进行编码是一个类型错误。如果skipkeys为真,则只跳过这些项。
如果确保_ASCII为真,则输出将被保证为str对象,并对所有传入的非ASCII字符进行转义。如果确保_ASCII为假,则输出可以包含非ASCII字符。
如果Check_Circle为True,则在编码期间将检查列表、字典和自定义编码对象的循环引用,以防止无限递归(这将导致RecursionError)。否则,不会进行此类检查。
如果allow_Nan为真,则Nan、Infinity和-Infinity将被编码为这样。此行为不符合JSON规范,但与大多数基于JavaScript的编码器和解码器一致。否则,对此类浮点数进行编码将是一个值错误。
如果sort_keys为true,那么字典的输出将按key排序;这对于回归测试很有用,以确保可以每天比较JSON序列化。
如果indent是非负整数,那么json数组元素和对象成员将以该indent级别完美打印。0的缩进级别将只插入换行符。“无”是最紧凑的表示形式。
如果指定了分隔符,则分隔符应该是(item_separator,key_separator)元组。如果 缩进 是
None
和(“,”,“:”)否则。要获得最紧凑的JSON表示,应该指定(“,”,“:”)以消除空白。如果指定,则默认值是一个函数,该函数将为无法序列化的对象调用。它应该返回对象的JSON可编码版本或引发
TypeError
.方法总结
default
\(OBJ)在子类中实现此方法,以便它返回的可序列化对象
o
或调用基本实现(以引发TypeError
)方法文件