A JSON5 parser that, among other features, supports round-trip preservation of comments
Project description
json-five
JSON5 for Python
Installation
pip install json-five
This project has just one requirement: the sly
package.
Usage
NOTE: the import name is different from the install name (sorry, many were taken already)
>>> import json5
>>> json_text = """{ // This is a JSON5 comment
"foo": "bar" /* this is a JSON5 block
comment that can span lines /*
"bacon": "eggs"
}
"""
>>> json5.loads(json_text)
{"foo": "bar", "bacon": "eggs"}
See also the full documentation
Project goals
- support a similar interface to the
json
module with support for JSON5 sources - support round-trip preservation of comments
Status/milestones
This project is in very early stages of development. The following are some milestones that hopefully will be able to be marked as done as development progresses.
- parse json5 to Python (ignoring comments)
- line comments
- block comments
- numeric literals
- trailing commas for arrays and objects
- line continuations
- ecma identifiers as object keys
- leading plus for numbers
- single quoted strings
- escape characters in strings
- dump python to JSON (no comment support)
- indent style (that matches
json
) - style options (quotes, trailing commas, etc)
- helper classes for dumping types as other literals (hexadecimal numbers, identifiers, etc)
- load/loads to support similar options to
json
(e.g.object_hook
,parse_x
, etc) - dump/dumps to support similar options to
json
module (e.g. hooks,ensure_ascii
, etc) - string escapes according to quote style
- indent style (that matches
- support manipulation of json model (e.g. to add/edit comments)
- dump json model with comments
- preserve comments when loading json5 (round-trip support)
...
- Optimize with a C/Cython version
How fast is it?
It's nowhere close to the C-optimized json
stdlib module. We may get closer to that
benchmark if/when we rewrite parts with Cython.
In my own limited testing, as of v0.0.2, this module is about 10-450x slower than the stdlib C-optimized json
and about 10-50x slower than the stdlib pure python version of json
.
I expect this to slow down marginally when round-trip comment preservation is implemented.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for json_five-0.1.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e05b3d7d3fe18d085ec4d5a65b9f00108994906e38d0adab57f43c4cfed8bba |
|
MD5 | db138fdc2e2f18c6eefbbad42e27ee48 |
|
BLAKE2b-256 | ef4a19bd79d1b809b9bea0cef8fcb6447a0d1503621ec875febb457186ae7001 |