Skip to main content

yapic.json

GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status PyPI - Downloads

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) 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 encoding support

    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

Windows

Usage

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

Json data to python

from yapic import json

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

Python object to json data

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 (s: bytes, str, *, object_hook: Callable[[dict], Any]]=None, parse_float: Callable[[str], Any]]=None, parse_date: bool=True)

    object_hook example:

    >>> 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:

    >>> from yapic import json
    >>> from decimal import Decimal
    >>> json.loads("1.2", parse_float=Decimal)
    Decimal('1.2')
  • dumps (obj: Any, *, default: Callable[[Any], JSONT]=None, tojson: str="__json__", ensure_ascii: bool=True, encode_datetime: bool=True) -> str

    default example:

    >>> 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:

    >>> 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 (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

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

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

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

[…]

Metadata

Release files for yapic.json 1.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yapic.json 1.9.5
File Size Uploaded
yapic.json-1.9.5.tar.gz 105.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for yapic.json 1.9.5
File
yapic.json-1.9.5-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
yapic.json-1.9.5-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
yapic.json-1.9.5-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
yapic.json-1.9.5-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
yapic.json-1.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
yapic.json-1.9.5-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
yapic.json-1.9.5-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
yapic.json-1.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
yapic.json-1.9.5-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
yapic.json-1.9.5-cp39-cp39-win32.whl CPython 3.9 CPython 3.9 Windows x86-32 Details
yapic.json-1.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
yapic.json-1.9.5-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
yapic.json-1.9.5-cp38-cp38-win32.whl CPython 3.8 CPython 3.8 Windows x86-32 Details
yapic.json-1.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
yapic.json-1.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details

Total release size: 3.8 MB

Release files / yapic.json-1.9.5.tar.gz

Download URL yapic.json-1.9.5.tar.gz
Size 105.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d4c7a533b0670709fca9623f243e6bc5b6c0f67adbb4de508af2381c271e98b4
BLAKE2b-256 checksum
How to use checksums
3d355d52934c020bfbffaff2c09b311f65103655a25dd4182cd23984187b9872
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.11.10

Release files / yapic.json-1.9.5-cp312-cp312-win_amd64.whl

Download URL yapic.json-1.9.5-cp312-cp312-win_amd64.whl
Size 84.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3db5a5828efd0d207a74f71bd41ab7db995fe26920bff1e413b756b367691db2
BLAKE2b-256 checksum
How to use checksums
cb6e664b9557cf99e34783da9f2cb384817379cea2b8d5f02f73fe119023c4dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.12.6

Release files / yapic.json-1.9.5-cp312-cp312-win32.whl

Download URL yapic.json-1.9.5-cp312-cp312-win32.whl
Size 77.8 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
63036af738ccd4d3cf5a3446a2867ad62e78f66af21dcd73b77992a19ee43e15
BLAKE2b-256 checksum
How to use checksums
263deedd25e7497d7e761907705b99f8fb452e27a24f54be9d4d4cd505eec1b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.12.6

Release files / yapic.json-1.9.5-cp311-cp311-win_amd64.whl

Download URL yapic.json-1.9.5-cp311-cp311-win_amd64.whl
Size 83.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
f8d37c115b31bdef135918a2f24e3bdbee128f16838ce44def5114dd48da2de1
BLAKE2b-256 checksum
How to use checksums
e9d44c7341485efead5d29d8230789fb44af3c6a27b57c54661aaf3e0bc389e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.11.9

Release files / yapic.json-1.9.5-cp311-cp311-win32.whl

Download URL yapic.json-1.9.5-cp311-cp311-win32.whl
Size 77.3 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
570a65975f312cf7118526e36349d914a3b736b79e6e005dae99e6dd1eb00fea
BLAKE2b-256 checksum
How to use checksums
90c8f409a334fea320b3505812ed190559e0b62ef53cbabe19428615ad974634
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.11.9

Release files / yapic.json-1.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL yapic.json-1.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 610.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5cea756a8c786309690f95a76d49549094fc8c40ba8ea14b53cc484ffdbec885
BLAKE2b-256 checksum
How to use checksums
6eedebc25d60204cff64ed2182ae819a92df06afd8b9a1ce067d9026d52e759e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.10

Release files / yapic.json-1.9.5-cp310-cp310-win_amd64.whl

Download URL yapic.json-1.9.5-cp310-cp310-win_amd64.whl
Size 83.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
5b5a42986def9908fab9da85ce35429f76a0f92b0c13e42660b5de921e0cb2b6
BLAKE2b-256 checksum
How to use checksums
89e34290f611ce9216af7252a07c7e08ea8831e83cab8d85925c9852f2b30f3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.10.11

Release files / yapic.json-1.9.5-cp310-cp310-win32.whl

Download URL yapic.json-1.9.5-cp310-cp310-win32.whl
Size 77.2 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
9b69e9d7a84aac758883c47e4eff379b64283be34da9804a3ce19373d0bf7361
BLAKE2b-256 checksum
How to use checksums
11cef1630faee68721ce2d0d7a4864ba0b9454dc66ff5d56bfb623e40a47663d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.10.11

Release files / yapic.json-1.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL yapic.json-1.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 575.4 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7e2955502171738e9bfd367dfe4680f8a21eeec5b5cef84b4bafb6b487fa05bb
BLAKE2b-256 checksum
How to use checksums
9b97cf6fed72febc22404ce36713653ec38715e1f73cfc63a58496bddd536482
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.10

Release files / yapic.json-1.9.5-cp39-cp39-win_amd64.whl

Download URL yapic.json-1.9.5-cp39-cp39-win_amd64.whl
Size 84.0 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
be226bc8b20af020b2453c017ac753d5ae48cb5989386f0dc8910a861750f3f4
BLAKE2b-256 checksum
How to use checksums
02ac4b01db28bb6eb315c523c0210b32e723d4a3cecdae6ff155fa01777a2166
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.9.13

Release files / yapic.json-1.9.5-cp39-cp39-win32.whl

Download URL yapic.json-1.9.5-cp39-cp39-win32.whl
Size 77.2 kB
Tags CPython 3.9 Windows x86-32
SHA-256 checksum
How to use checksums
5abaa56b65cdb5d72fa6878339296edfb7702bb3893031662753fec52cb7fa12
BLAKE2b-256 checksum
How to use checksums
c62aeccd59bf1411db491dcd33f9addacec2989193ab39142bb8464eace575bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.9.13

Release files / yapic.json-1.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL yapic.json-1.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 573.8 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7c3cc99d44e57d1e214c9c2e0be70c98123e602efb7b2be0161268c456cfc4d5
BLAKE2b-256 checksum
How to use checksums
db4d37f0a6036e755a5f76eb2a3d1130384d3f00dcee3b9a0cbdc7aeabc87451
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.10

Release files / yapic.json-1.9.5-cp38-cp38-win_amd64.whl

Download URL yapic.json-1.9.5-cp38-cp38-win_amd64.whl
Size 84.1 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
fefe71a6d64fbcd69ea12bfe820c91d7fa8148369970ff61fa7ac29456df92c4
BLAKE2b-256 checksum
How to use checksums
7cc1f4c4dff34dc6a6b39519d643dd8b147e2f93c49fb5c41068e3e25b5922c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.8.10

Release files / yapic.json-1.9.5-cp38-cp38-win32.whl

Download URL yapic.json-1.9.5-cp38-cp38-win32.whl
Size 77.2 kB
Tags CPython 3.8 Windows x86-32
SHA-256 checksum
How to use checksums
71e6eac1d1bead9ce1107312d567d0ba74802fe34e2db2dba50d24b9286551f5
BLAKE2b-256 checksum
How to use checksums
28c8fb65c09a6f9724b2b6c70fb73519743b74754cfdaa702830b7cb51418567
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.8.10

Release files / yapic.json-1.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL yapic.json-1.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 579.9 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e9d2ac05d561e13bb6364aa08b5afbddd4531968e434595ae99d1ec9fca23bf8
BLAKE2b-256 checksum
How to use checksums
78543b6baf1059ec582691dd7be210119e1acd3ac78b5805d6e3729e7ecbcd11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.10

Release files / yapic.json-1.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL yapic.json-1.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 541.3 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1a6895cc0a8942202da85b64b3fbecfcdf1519676f92c539d89418df25e5845b
BLAKE2b-256 checksum
How to use checksums
4c513ce5602196422eb171004946762f1f019168e0f1e2297c6ce11f6347bb2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.10

Release history Release notifications | RSS feed

This release

1.9.5 This release

16 release files

1.9.4

16 release files

1.9.1

16 release files

1.7.2

17 release files

1.6.2

22 release files

1.6.1

14 release files

1.6.0

22 release files

1.5.4

20 release files

1.5.1

21 release files

1.5.0

21 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page