bokeh.core.json_encoder

提供一个函数和类来实现自定义JSON编码器,用于序列化BokehJS对象。

主接口由 serialize_json 函数,使用自定义 BokehJSONEncoder 生成JSON输出。

通常,此模块中的函数按以下方式转换值:

  • Datetime值(Python、Pandas、NumPy)从epoch开始转换为浮点毫秒。

  • TimeDelta值转换为绝对浮点毫秒。

  • RelativeDelta值将转换为字典。

  • 十进制值转换为浮点。

  • 通过此接口传递的序列(Pandas系列、NumPy数组、python序列)将转换为列表。但是请注意,Bokeh文档中的数据源中的数组在其他地方被转换,默认情况下使用二进制编码格式。

  • 博克 Model 实例通常在整个Bokeh文档的上下文中序列化。通过此接口传递的模型将转换为引用。

  • HasProps (不是Bokeh模型)被转换为键/值dict或它们的所有属性和值。

  • Color 实例被转换为CSS颜色值。

serialize_json(obj, pretty=None, indent=None, **kwargs)[源代码]

返回对象的序列化JSON表示,适合发送到BokehJS。

此函数通常用于以BokehJS期望的方式序列化单个python对象。特别是,许多datetime值会自动规范化为预期的格式。也可以传递一些Bokeh对象,但请注意,Bokeh模型通常在整个Bokeh文档的上下文中正确序列化。

生成的JSON始终具有排序键。默认情况下。除非请求漂亮的输出或缩进,否则输出尽可能紧凑。

参数
  • obj (obj) -- 要序列化为JSON格式的对象

  • pretty (bool, optional) -- 是否生成美化输出。如果 True ,在分隔符后添加空格,并应用缩进和换行。(默认值:False)也可以使用环境变量启用漂亮的输出 BOKEH_PRETTY ,如果已设置,则重写此参数。

  • indent (int or None, optional) -- 生成的JSON输出中要使用的缩进量。如果 None 然后不使用缩进,除非启用漂亮输出,在这种情况下使用两个空格。(默认值:无)

任何其他关键字参数都传递给 json.dumps ,但某些是内部计算的,并且不能重写:

  • allow_nan

  • 缩进

  • 分离器

  • sort_keys

实际案例

>>> data = dict(b=np.datetime64('2017-01-01'), a = np.arange(3))

>>>print(serialize_json(data))
{"a":[0,1,2],"b":1483228800000.0}

>>> print(serialize_json(data, pretty=True))
{
  "a": [
    0,
    1,
    2
  ],
  "b": 1483228800000.0
}
class BokehJSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[源代码]

风俗习惯 json.JSONEncoder 根据BokehJS协议对对象进行编码的子类。

default(obj)[源代码]

所需的 default 方法 JSONEncoder 子类。

参数

obj (obj) -- 要编码的对象。此方法中未特别处理的任何内容都将传递给默认的系统JSON编码器。

transform_python_types(obj)[源代码]

处理特殊标量,如(Python、NumPy或Pandas)datetime或十进制值。

参数

obj (obj) -- 要编码的对象。此方法中未特别处理的任何内容都将传递给默认的系统JSON编码器。