Provide a functions and classes to implement a custom JSON encoder for serializing objects for BokehJS.
The primary interface is provided by the serialize_json function, which uses the custom BokehJSONEncoder to produce JSON output.
serialize_json
BokehJSONEncoder
In general, functions in this module convert values in the following way:
Datetime values (Python, Pandas, NumPy) are converted to floating point milliseconds since epoch.
TimeDelta values are converted to absolute floating point milliseconds.
RelativeDelta values are converted to dictionaries.
Decimal values are converted to floating point.
Sequences (Pandas Series, NumPy arrays, python sequences) that are passed though this interface are converted to lists. Note, however, that arrays in data sources inside Bokeh Documents are converted elsewhere, and by default use a binary encoded format.
Bokeh Model instances are usually serialized elsewhere in the context of an entire Bokeh Document. Models passed trough this interface are converted to references.
Model
HasProps (that are not Bokeh models) are converted to key/value dicts or all their properties and values.
HasProps
Color instances are converted to CSS color values.
Color
Return a serialized JSON representation of objects, suitable to send to BokehJS.
This function is typically used to serialize single python objects in the manner expected by BokehJS. In particular, many datetime values are automatically normalized to an expected format. Some Bokeh objects can also be passed, but note that Bokeh models are typically properly serialized in the context of an entire Bokeh document.
The resulting JSON always has sorted keys. By default. the output is as compact as possible unless pretty output or indentation is requested.
obj (obj) – the object to serialize to JSON format
pretty (bool, optional) –
Whether to generate prettified output. If True, spaces are added after added after separators, and indentation and newlines are applied. (default: False)
True
Pretty output can also be enabled with the environment variable BOKEH_PRETTY, which overrides this argument, if set.
BOKEH_PRETTY
indent (int or None, optional) – Amount of indentation to use in generated JSON output. If None then no indentation is used, unless pretty output is enabled, in which case two spaces are used. (default: None)
None
Any additional keyword arguments are passed to json.dumps, except for some that are computed internally, and cannot be overridden:
json.dumps
allow_nan
indent
separators
sort_keys
Examples
>>> 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 }
A custom json.JSONEncoder subclass for encoding objects in accordance with the BokehJS protocol.
json.JSONEncoder
default
The required default method for JSONEncoder subclasses.
JSONEncoder
obj (obj) – The object to encode. Anything not specifically handled in this method is passed on to the default system JSON encoder.
transform_python_types
Handle special scalars such as (Python, NumPy, or Pandas) datetimes, or Decimal values.