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

方法文件

default(obj)[源代码]#

在子类中实现此方法,以便它返回的可序列化对象 o 或调用基本实现(以引发 TypeError

例如,为了支持任意迭代器,可以实现如下的默认值:

def default(self, o):
    try:
        iterable = iter(o)
    except TypeError:
        pass
    else:
        return list(iterable)
    # Let the base class default method raise the TypeError
    return JSONEncoder.default(self, o)