bokeh.core.json_encoder#
提供函数和类以实现自定义 JSON 编码器,用于为 BokehJS 序列化对象。
一般来说,此模块中的函数按以下方式转换值
日期时间值(Python、Pandas、NumPy)被转换为自 epoch 以来的浮点毫秒数。
TimeDelta 值被转换为绝对浮点毫秒数。
RelativeDelta 值被转换为字典。
Decimal 值被转换为浮点数。
通过此接口传递的序列(Pandas Series、NumPy 数组、python 序列)被转换为列表。但请注意,Bokeh 文档内数据源中的数组在其他地方转换,并且默认使用二进制编码格式。
Bokeh
Model
实例通常在整个 Bokeh 文档的上下文中在其他地方序列化。通过此接口传递的 Model 被转换为引用。HasProps
(不是 Bokeh 模型)被转换为键/值字典或其所有属性和值。Color
实例被转换为 CSS 颜色值。
- serialize_json(obj: Any | Serialized[Any], *, pretty: bool | None = None, indent: int | None = None) str [source]#
将对象或序列化表示形式转换为 JSON 字符串。
此函数接受 Python 可序列化对象,并将它们转换为 JSON 字符串。此函数不执行任何高级序列化,特别是它不会序列化 Bokeh 模型或 numpy 数组。为此,请使用
bokeh.core.serialization.Serializer
类,它处理可能在 Bokeh 中遇到的所有类型的对象的序列化。- 参数:
- 返回值:
RFC-8259 JSON 字符串
- 返回类型:
示例
>>> import numpy as np >>> from bokeh.core.serialization import Serializer >>> from bokeh.core.json_encoder import serialize_json >>> s = Serializer() >>> obj = dict(b=np.datetime64("2023-02-25"), a=np.arange(3)) >>> rep = s.encode(obj) >>> rep { 'type': 'map', 'entries': [ ('b', 1677283200000.0), ('a', { 'type': 'ndarray', 'array': {'type': 'bytes', 'data': Buffer(id='p1000', data=<memory at 0x7fe5300e2d40>)}, 'shape': [3], 'dtype': 'int32', 'order': 'little', }), ], } >>> serialize_json(rep) '{"type":"map","entries":[["b",1677283200000.0],["a",{"type":"ndarray","array":' "{"type":"bytes","data":"AAAAAAEAAAACAAAA"},"shape":[3],"dtype":"int32","order":"little"}]]}'
注意
使用此函数并非绝对必要。可以将序列化器配置为生成与标准库模块
json
中的dumps()
完全兼容的输出。此函数和dumps()
之间的主要区别在于内存缓冲区的处理。使用以下设置>>> s = Serializer(deferred=False) >>> import json >>> json.dumps(s.encode(obj))