Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anteru/sjson
https://github.com/anteru/sjson
python sjson
Last synced: 25 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/anteru/sjson
- Owner: Anteru
- License: bsd-2-clause
- Created: 2018-05-19T16:27:57.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-09-04T12:03:15.000Z (2 months ago)
- Last Synced: 2024-10-05T13:46:04.688Z (about 1 month ago)
- Topics: python, sjson
- Language: Python
- Homepage: https://shelter13.net/projects/SJSON/
- Size: 154 KB
- Stars: 1
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
SJSON
=====**SJSON** is a small library to read/write simplified JSON, as described originally on the [Bitsquid blog](http://bitsquid.blogspot.de/2009/10/simplified-json-notation.html).
License
-------**SJSON** is licensed under the two-clause BSD license. See `LICENSE.txt` for details.
SJSON format
------------SJSON is very similar to normal JSON (in fact, since release 1.2.0, the SJSON library will also load plain JSON). It mostly reduces the required markup a bit. The main differences are:
* Every file starts with an implicit object. That is, an empty SJSON file is equivalent to a JSON file containing `{}`.
* Commas after a key-value pair are optional.
* Keys don't have to be quoted as long as they are valid identifiers. An identifier consists of letters, digits, and `_`.
* `=` is allowed in addition to `:` for key-value separation. The canonical separator is `=`.
* C and C++ style comments are allowed.In addition, this library provides support for raw string literals.
Example
-------JSON:
{
"foo" : 23,
"bar" : [1, 2, 3],
"baz" : {
"key" : "value"
}
}SJSON:
foo = 23
bar = [1, 2, 3]
baz = {
// SJSON also allows for comments
key = "value"
}As an extension, SJSON allows for raw string literals, in both Lua and Python flavors:
foo = [=[This is a raw literal with embedded " and stuff]=]
foo = """This is a raw literal with embedded " and stuff"""
Usage
-----The library provides four methods, similar to the Python JSON module. These are:
* `dump`: Encode an object as SJSON and write to a stream.
* `dumps`: Encode an object as SJSON and return a string.
* `load`: Decode a SJSON encoded object from a stream.
* `loads`: Decode a SJSON encoded object from a string.Changelog
---------### 2.2
* Bump minimum Python to 3.12.
* Add type information.
* Various internal cleanups & refactorings.### 2.1.1
* Packaging changes only. Raised supported Python version to Python 3.12
### 2.1
* Add support for Python-style raw strings, delimited by `"""`.
* Improve handling of unknown string escapes. Previously, those would raise an exception, now they get passed through.### 2.0.3
* Re-release of 2.0.2.
### 2.0.2
* Packaging changes only. This release contains packaging changes only and has not been released to the public, use 2.0.3 instead.
### 2.0.1
* Add `dump` in addition to `dumps` for consistency with the Python JSON module.
* Additional PEP8 conformance tweaks.### 2.0.0
* The library is now PEP8 compliant. This should *not* affect most users of this library, the only user-visible change is that `ParseException.GetLocation` has been renamed to `get_location`. The core functions have not been renamed and are API compatible.
### 1.2.0
* Keys did not get quoted properly during encoding if they contained special characters.
* List elements were incorrectly indented.
* List indentation now accepts either a string or a number (similar to the Python JSON module.)
* Both `:` and `=` are now supported as key-value separators, allowing the SJSON library to parse plain JSON files.### 1.1.1
* Add support for C/C++ style comments.
* Line/column numbers start at 1 now (previously, the first character was in line 0, column 0).### 1.1.0
* Parsing performance has been significantly improved.
* It is possible to parse a file-like stream or string now.### 1.0.4
* Track position during parsing. This will likely reduce the performance a bit, but allows for much better error messages.
* Input is byte-oriented now.### 1.0.3
* Add support for raw string literals. These are delimited by `[=[` `]=]` and don't require escaping inside the string.
### 1.0.2
* Strings with whitespace are now properly escaped.
### 1.0.1
* Various fixes to string encoding/decoding bugs.
* Encoding now uses `collections.abc` to identify sequences and mappings instead of testing directly against `list` and `dict`.### 1.0.0
Initial PyPI release.