A wrapper to JSON parsers allowing comments, multiline strings and trailing commas
Project description
Json Comment
A wrapper to JSON parsers allowing comments, multiline strings and trailing commas
Dependencies
- Python 3.3+
- TODO NEW ADDITIONS
Optional
- ujson 1.30+
Description
JSON Comment allows to parse JSON files or strings with:
- Single and Multi line comments
- Multi line data strings
- Trailing commas in objects and arrays, after the last item
This package works with any JSON parser which supports:
load(fp, ...)
to parse filesloads(s, ...)
to parse strings
by adding a preprocessor to these calls.
Comments
#
,;
and//
are for single line comments/*
and*/
enclose multiline comments
Inline comments are not supported
Multiline strings
Any string can be multiline, even object keys.
- Multiline strings start and end with
"""
, like in python - The preprocessor merges all lines to a single JSON standard string
- A single trailing space per line is kept, if present
- New line is not kept. To hard code new lines in the string, use
\\n
Custom Methods
File Load
loadf(path, *args, default = None, **kwargs)
Opens a JSON file with comments. Allows a default value if loading or parsing fails
File Save
dumpf(json_obj, path, *args, indent=4, **kwargs)
Saves a JSON file with indentation
Install
pip install jsoncomment
OR
- Download source
python setup.py install
Usage
from jsoncomment import JsonComment
string = "[]"
json = JsonComment()
json_obj = json.loads(string)
Examples
Added in the /examples directory
Limitations
#
,;
,//
and/*
may be preceded only by whitespaces or tabs on the same line*/
may be followed only by whitespaces or tabs on the same line- The trailing comma must be the last character on the same line
Source
Source code available with MIT license on Bitbucket.
API
Added in top level __init__.py
How to read the API
API is split in:
* `User Interface` for common use
* `Developer Interface` exposing some internals that could be useful
For each item ( function or class ), there are 2 blocks of comments, above and below item definition:
* The top describes the return values
* The bottom describes the item and call variables
If call variables have defaults or use duck typing, every allowed value is described
Example:
# return_value
# description
from .some_module import SomeClass
# SomeClass description
# (
# variable_1,
# description
# variable_2 = something,
# description
# = Default
# description of default value ( something )
# = something_2
# description of alternate form ( duck typing )
# )
describes return_value = SomeClass(variable_1, variable_2 = current_value)
Contact
Gaspare Iengo @ email
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
File details
Details for the file jsoncomment-0.4.2.tar.gz
.
File metadata
- Download URL: jsoncomment-0.4.2.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fa065a85327306211ec567bb9ad8ca252c59332f6c6cf09c3228a0abf1191da |
|
MD5 | 4c8c19f965102b41e36f3d69c020e0fc |
|
BLAKE2b-256 | c375b5c7895b8d2edcecbc49b55adb10087183050f95eac33c3453cc12c610f1 |
File details
Details for the file jsoncomment-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: jsoncomment-0.4.2-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ce82b755e54fdc0dc1c3c05e2bc7db0c3f609be31771401f78f00e743b0403e |
|
MD5 | 4248b5531144b1d4a8e83a448255e744 |
|
BLAKE2b-256 | 139eec3da1601c7a5700e9e4229d5404e590107a1bbe50c78dbcfb33948177fc |