This project is now deprecated and has been replaced by Odin.
JSRN - JavaScript Resource Notation for Python
A JSON based notation for resources that can be easily converted into object graphs.
Note
Official location of this project is now GitHub (for Travis-CI support), the BitBucket repository may not contain the latest code.
Highlights
- Class based declarative style
- Support for all JSON primitive types (including JavaScript Date)
- Fields for building composite resources
- Field and Resource level validation
- Easy extension to support custom fields
- Python 2.7+ and Python 3.3+ supported
Quick links
Upcoming features
In development
- Customisable generation of documentation of resources (for integration into Sphinx)
- Complete documentation (around 70-80% complete for current features)
Planning
- Integration with other libraries (ie Django Models/Forms)
Requires
- six
Optional
- jinja2 >= 2.7 - For documentation generation
- simplejson - Performance improvements
Example
With definition:
import jsrn class Author(jsrn.Resource): name = jsrn.StringField() class Publisher(jsrn.Resource): name = jsrn.StringField() class Book(jsrn.Resource): title = jsrn.StringField() authors = jsrn.ArrayOf(Author) publisher = jsrn.ObjectAs(Publisher) genre = jsrn.StringField() num_pages = jsrn.IntegerField()
>>> b = Book( title="Consider Phlebas", genre="Space Opera", publisher=Publisher(name="Macmillan"), num_pages=471 ) >>> b.authors.append(Author(name="Iain M. Banks")) >>> jsrn.dumps(b, pretty_print=True) { "$": "Book", "authors": [ { "$": "Author", "name": "Iain M. Banks" } ], "genre": "Space Opera", "num_pages": 471, "publisher": { "$": "Publisher", "name": "Macmillan" }, "title": "Consider Phlebas" }