Skip to main content

A JSON streaming writer

Project description

Travis CI Status Appveyor CI Status Documentation Status

Source code is available at github.

The code is licensed MIT. See the included LICENSE file for the exact terms.

Description

JSONstreams is a package that attempts to making writing JSON in a streaming format easier. In contrast to the core json module, this package doesn’t require building a complete tree of dicts and lists before writing, instead it provides a straightforward way to to write a JSON document without building the whole data structure ahead of time.

JSONstreams considers there to be two basic types, the JSON array and the JSON object, which correspond to Python’s list and dict respectively, and can encode any types that the json.JSONEncoder can, or can use an subclass to handle additional types.

The interface is designed to be context manger centric. The Stream class, and the Array and Object classes returned by the subarray and subobject methods (respectively), can be used as context managers or not, but use as context managers are recommended to ensure that each container is closed properly.

Basic Usage

A simple example looks like this

import jsonstreams

with jsonstreams.Stream(jsonstreams.Type.object, filename='foo') as s:
    s.write('foo', 'bar')
    with s.subobject('a') as a:
        a.write(1, 'foo')
        a.write(2, 'bar')
    s.write('bar', 'foo')

Writing into a closed group will raise an exception, which should not be handled, this exception is always an error in programming and should be corrected.

It is possible to write any value that the encoder (json.JSONEncoder by default) can encode, so iterating over lists or dictionaries to write them in is unnecessary:

import jsonstreams

mylist = list(range(10))
mydict = {a: b for a in range(10) for b in 'abcdefghij'}

with jsonstreams.Stream(jsonstreams.Type.object, filename='foo') as s:
    s.write('list', mylist)
    s.write('dict', mydict)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonstreams-0.4.2.tar.gz (30.8 kB view details)

Uploaded Source

Built Distribution

jsonstreams-0.4.2-py2.py3-none-any.whl (9.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file jsonstreams-0.4.2.tar.gz.

File metadata

  • Download URL: jsonstreams-0.4.2.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.9

File hashes

Hashes for jsonstreams-0.4.2.tar.gz
Algorithm Hash digest
SHA256 0c6f7f4ee0584ce3aff194656185df8a647fc2dfde414b50b848f1989c165af7
MD5 d125ee2cfd0596cc9745de963d7f40e6
BLAKE2b-256 8f2b497c02b86161d9aaca789bb24e28643f22be5e073e180f9b7218d2cedd3f

See more details on using hashes here.

File details

Details for the file jsonstreams-0.4.2-py2.py3-none-any.whl.

File metadata

  • Download URL: jsonstreams-0.4.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.9

File hashes

Hashes for jsonstreams-0.4.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a304ad85da82f4ca8b60034de2b2904b0b41f966b11867b827a5b1d6b1219ffe
MD5 7267de200b9905e39d1c64f36217b611
BLAKE2b-256 f5dc97e61141e376871cc59e6199643c36002c66cda94f3c7a8928f8d0465be0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page