bokeh.core.json_encoder#
提供函数和类来实现自定义 JSON 编码器,用于序列化 BokehJS 的对象。
一般来说,此模块中的函数以以下方式转换值
日期时间值(Python、Pandas、NumPy)转换为自纪元以来的毫秒浮点数。
时间差值转换为绝对毫秒浮点数。
相对时间差值转换为字典。
十进制值转换为浮点数。
通过此接口传递的序列(Pandas Series、NumPy 数组、python 序列)转换为列表。但是,请注意,Bokeh 文档中数据源中的数组在其他地方转换,默认情况下使用二进制编码格式。
Bokeh
Model
实例通常在整个 Bokeh 文档的上下文中序列化。通过此接口传递的模型转换为引用。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))