bokeh.core.json_encoder#
提供函数和类来实现自定义的JSON编码器,用于序列化对象以供BokehJS使用。
通常,此模块中的函数以下列方式转换值:
日期时间值(Python, Pandas, NumPy)被转换为自纪元以来的浮点毫秒数。
TimeDelta 值被转换为绝对的浮点毫秒数。
RelativeDelta 值被转换为字典。
十进制值被转换为浮点数。
通过此接口传递的序列(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中可能遇到的所有类型对象的序列化。- Parameters:
- Returns:
RFC-8259 JSON 字符串
- Return type:
示例
>>> 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))