SkillAgentSearch skills...

Yapic.json

Ultra fast json encode / decode library for Python 3.5+

Install / Use

/learn @zozzz/Yapic.json
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

yapic.json

.. image:: https://img.shields.io/github/actions/workflow/status/zozzz/yapic.json/release-linux.yml?label=linux&style=flat-square :alt: GitHub Workflow Status :target: https://github.com/zozzz/yapic.json

.. image:: https://img.shields.io/github/actions/workflow/status/zozzz/yapic.json/release-windows.yml?label=windows&style=flat-square :alt: GitHub Workflow Status :target: https://github.com/zozzz/yapic.json

.. image:: https://img.shields.io/github/actions/workflow/status/zozzz/yapic.json/release-macos.yml?label=macos&style=flat-square :alt: GitHub Workflow Status :target: https://github.com/zozzz/yapic.json

.. image:: https://img.shields.io/pypi/dm/yapic.json.svg?style=flat-square :alt: PyPI - Downloads :target: https://pypi.org/project/yapic.json/

yapic.json is an extreamly fast json encoder / decoder package for python. Encoding and decoding output fully compatible with python.json package.

Features

  • Extreamly fast (see benchmark results in '/benchmark' directory)

  • Fully compatible output with Python json package

  • Builtin object serialization method __json__ (see below)

  • Strict JSON (RFC 4627) <http://www.ietf.org/rfc/rfc4627.txt?number=4627>_ expected: Infinity, NaN (JavaScript compatible infinity and not a number symbols)

  • UTF-8 encoding & decoding support

  • Accurate float encoding & decoding

  • date / datetime / time encondig & decoding support (can encode subclasses)

  • uuid.UUID encoding support

  • ItemsView <https://docs.python.org/3/library/collections.abc.html#collections.abc.ItemsView>_ encoding support

    .. code-block:: python

    from collections.abc import ItemsView

    class MyDictGenerator(ItemsView): def iter(self): yield ("some_key", "some_value") yield ("meaning_of_life", 42)

    json.dumps(MyDictGenerator()) == '{"some_key":"some_value","meaning_of_life":42}'

Requirements

  • Only works with Python 3.5 or greater

  • c++ 11 comaptible compiler. (only if u want to build from source)

    Wheels provided for windows x86/x64 and linux x86/x64 and osx x64

  • On Windows you maybe need to install Microsoft Visual C++ Redistributable <https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0>_

Windows



Usage
-----

Very similar that ``python.json``, let's see some example

Json data to python

.. code-block:: python

   from yapic import json

   >>> json.loads('"Hello World"')
   "Hello World"

Python object to json data

.. code-block:: python

   from yapic import json

   >>> json.dumps("Hello World")
   '"Hello World"'

   class Point:
      def __json__(self):
         return {"x":1, "y":2}

   >>> json.dumps(Point())
   '{"x":1,"y":2}'

Functions
---------

-  `loads <https://github.com/zozzz/yapic.json/blob/master/src/_json.pyi#L11>`_ (**s:** ``bytes``, ``str``, ``*``, **object_hook:** ``Callable[[dict], Any]]=None``, **parse_float:** ``Callable[[str], Any]]=None``, **parse_date:** ``bool=True``)

   **object_hook example:**

   .. code-block:: python

      >>> from yapic import json
      >>> def hook(dict_):
      ...     if "__complex__" in dict_:
      ...         return complex(dict_["real"], dict_["imag"])
      ...
      >>> json.loads('{"__complex__":true, "real":1, "imag":2}',
      >>>     object_hook=hook)
      (1+2j)

   **parse_float example:**

   .. code-block:: python

      >>> from yapic import json
      >>> from decimal import Decimal
      >>> json.loads("1.2", parse_float=Decimal)
      Decimal('1.2')

-  `dumps <https://github.com/zozzz/yapic.json/blob/master/src/_json.pyi#L20>`_ (**obj:** ``Any``, ``*``, **default:** ``Callable[[Any], JSONT]=None``, **tojson:** ``str="__json__"``, **ensure_ascii:** ``bool=True``, **encode_datetime:** ``bool=True``) -> ``str``

   **default example:**

   .. code-block:: python

      >>> from yapic import json
      >>> def default_func(o):
      ...     if isinstance(o, complex):
      ...         return {"__complex__": True, "real": 1, "imag": 2}
      ...
      >>> json.dumps(1 + 2j, default=default_func)
      '{"__complex__":true,"real":1,"imag":2}'

   **tojson example:**

   .. code-block:: python

      >>> from yapic import json
      >>> class Point(object):
      ...     def __init__(self, x, y):
      ...         self.x = x
      ...         self.y = y
      ...     def __json__(self):
      ...         return {"x": self.x, "y": self.y}
      ...
      >>> json.dumps(Point(10, 20))
      '{"x":10,"y":20}'

-  `dumpb <https://github.com/zozzz/yapic.json/blob/master/src/_json.pyi#L50>`_ (**obj:** ``Any``, ``*``, **default:** ``Callable[[Any], JSONT]=None``, **tojson:** ``str="__json__"``, **ensure_ascii:** ``bool=True``, **encode_datetime:** ``bool=True``) -> ``bytes``

   Same as ``dumps``, but this function is return ``bytes`` insted of ``str``



Exceptions
----------

.. code-block:: python

   import json as py_json

   class JsonError(ValueError):
      """Base exception for all json errors"""

   class JsonEncodeError(JsonError):
      """Exception for encoding errors"""

   class JsonDecodeError(JsonError, py_json.JSONDecodeError):
      """Exception for decoding errors

      Can match python builtin ``json.JSONDecodeError``.
      """

   # alias for easier switch from std json lib
   JSONDecodeError = JsonDecodeError


Json to Python translations
---------------------------

.. csv-table::
   :header: Json, Python

   """string""", "str"
   "42", "int"
   "4.2, 4e2", "float (unless you specify parse_float)"
   "Infinity", "float(""inf"")"
   "NaN", "float(""NaN"")"
   "true", "True"
   "false", "False"
   "null", "None"
   "2000-01-01 12:34:56", "datetime without timezone"
   "2000-01-01 12:34:56Z", "datetime with utc timezone"
   "2000-01-01 12:34:56+0300", "datetime with custom timezone"
   "2000-01-01", "date"
   "10:12:34", "time without timezone"
   "10:12:34+0300", "time with custom timezone"
   "{...}", "dict (unless you specify object_hook)"
   "[...]", "list"


Python to Json translations
---------------------------

.. csv-table::
   :header: Python, Json

   "str", """..."""
   "int(42)", "42"
   "float(4.2), Decimal(4.2)", "4.2"
   "float(""inf""), Decimal(""inf"")", "Infinity"
   "float(""nan""), Decimal(""nan"")", "NaN"
   "True", "true"
   "False", "false"
   "None", "null"
   "datetime", """2000-01-01 12:34:56"", ""2000-01-01T12:34:56+0300"""
   "date", """2000-01-01"""
   "time", """12:34:56"", ""12:34:56+0300"""
   "UUID", """aba04c17-6ea3-48c1-8dcd-74f0a9b79bee"""
   "Enum", encoding `Enum.value` attribute
   "dict, ItemsView, dataclass", "{...}"
   "list, tuple, set, iterable", "[...]"
View on GitHub
GitHub Stars22
CategoryDevelopment
Updated24d ago
Forks3

Languages

Python

Security Score

80/100

Audited on Mar 15, 2026

No findings