pyzmq/zmq/utils/jsonapi.py

39 lines
1.0 KiB
Python

"""JSON serialize to/from utf8 bytes
.. versionchanged:: 22.2
Remove optional imports of different JSON implementations.
Now that we require recent Python, unconditionally use the standard library.
Custom JSON libraries can be used via custom serialization functions.
"""
# Copyright (C) PyZMQ Developers
# Distributed under the terms of the Modified BSD License.
from __future__ import annotations
import json
from typing import Any
# backward-compatibility, unused
jsonmod = json
def dumps(o: Any, **kwargs) -> bytes:
"""Serialize object to JSON bytes (utf-8).
Keyword arguments are passed along to :py:func:`json.dumps`.
"""
return json.dumps(o, **kwargs).encode("utf8")
def loads(s: bytes | str, **kwargs) -> dict | list | str | int | float:
"""Load object from JSON bytes (utf-8).
Keyword arguments are passed along to :py:func:`json.loads`.
"""
if isinstance(s, bytes):
s = s.decode("utf8")
return json.loads(s, **kwargs)
__all__ = ['dumps', 'loads']