Skip to main content

A JSON streaming writer

Project description

https://travis-ci.org/dcbaker/jsonstreams.svg?branch=master https://ci.appveyor.com/api/projects/status/4umkvc9thitacbf9/branch/master?svg=true

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 use looks like this:

with jsonstreams.Stream('foo', 'object') 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:

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

with jsonstreams.Stream('foo', 'object') 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.1.2.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

jsonstreams-0.1.2-py2.py3-none-any.whl (7.4 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: jsonstreams-0.1.2.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jsonstreams-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f3b4543ab67656a0ee7fbd8e13c0d4cc1d2428ed7db8961e16f29e1e34a2006c
MD5 f91bfaf7fdc04df7859be985fd58cb50
BLAKE2b-256 dd9ad721bd21421401d2604d5ab51bd66e161478feed168ea795d970c9a8a94b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jsonstreams-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 225c8e079d23822b584f85d2e4022fe074788b8f37d32fbf8b344284acb60ca9
MD5 39d9d4bcb7f5cb724e2d98a3a2f7d424
BLAKE2b-256 baa12f38dcb183968185c131bed5b6d7a7e5594c4fbc3ae47d356e465c74a2f5

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