Handle non-str keys when storing json data (#73958)
This commit is contained in:
parent
b880a05e45
commit
1866a1e925
2 changed files with 17 additions and 2 deletions
|
@ -45,6 +45,13 @@ def load_json(filename: str, default: list | dict | None = None) -> list | dict:
|
|||
return {} if default is None else default
|
||||
|
||||
|
||||
def _orjson_encoder(data: Any) -> str:
|
||||
"""JSON encoder that uses orjson."""
|
||||
return orjson.dumps(
|
||||
data, option=orjson.OPT_INDENT_2 | orjson.OPT_NON_STR_KEYS
|
||||
).decode("utf-8")
|
||||
|
||||
|
||||
def save_json(
|
||||
filename: str,
|
||||
data: list | dict,
|
||||
|
@ -62,8 +69,8 @@ def save_json(
|
|||
if encoder:
|
||||
json_data = json.dumps(data, indent=2, cls=encoder)
|
||||
else:
|
||||
dump = orjson.dumps
|
||||
json_data = orjson.dumps(data, option=orjson.OPT_INDENT_2).decode("utf-8")
|
||||
dump = _orjson_encoder
|
||||
json_data = _orjson_encoder(data)
|
||||
except TypeError as error:
|
||||
msg = f"Failed to serialize to JSON: {filename}. Bad data at {format_unserializable_data(find_paths_unserializable_data(data, dump=dump))}"
|
||||
_LOGGER.error(msg)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue