JSON¶
In order to better support JSON, you should declare each of your class that supports being converted to JSON with
Then you can convert structures made out of standard serializable Python JSON objects, such as dicts and lists, and also JSONAble objects, by this all
-
satella.json.
json_encode
(x: Any) → str¶ Convert an object to JSON. Will properly handle subclasses of JSONAble
Parameters: x – object to convert
You might also want to check out the JSONEncoder satella uses to do it.
-
class
satella.json.
JSONEncoder
(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)¶ This encoder will encode everything!
enums will be dumped to their value.
This will serialize unknown objects in the following way. First, __dict__ will be extracted out of this object. The dictionary will be constructed in such a way, that for each key in this __dict__, it’s value’s repr will be assigned.
-
satella.json.
read_json_from_file
(path: str) → satella.json.JSONAble¶ Load a JSON from a provided file, as UTF-8 encoded plain text.
Parameters: path – path to the file
Returns: JSON content
Raises: - ValueError – the file contained an invalid JSON
- OSError – the file was not readable or did not exist
-
satella.json.
write_json_to_file
(path: str, value: satella.json.JSONAble, **kwargs) → None¶ Write out a JSON to a file as UTF-8 encoded plain text.
This will use Satella’s
JSONEncoder
internally.Parameters: - path – path to the file
- value – JSON-able content
- kwargs – will be passed to ujson/json’s dump
-
satella.json.
write_json_to_file_if_different
(path: str, value: satella.json.JSONAble, encoding: str = 'utf-8', **kwargs) → bool¶ Read JSON from a file. Write out a JSON to a file if it’s value is different, as UTF-8 encoded plain text.
This will use Satella’s
JSONEncoder
internally.Parameters: - path – path to the file
- value – JSON-able content
- encoding – encoding to use while parsing the contents of the file
- kwargs – will be passed to ujson/json dumps
Returns: whether the write actually happened