JSON API Doc
This library provides ability to transform between normalized JSON API (http://jsonapi.org/) documents and denormalized Python dictionary object for easier manipulation in code. Also available as a command line utility and Python 3 module.
Deserialization
For this JSON API document:
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z"
},
"relationships": {
"author": {
"data": {"id": "42", "type": "people"}
}
}
}],
"included": [
{
"type": "people",
"id": "42",
"attributes": {
"name": "John",
"age": 80,
"gender": "male"
}
}
]
}
The simplified version will be:
[
{
"type": "articles",
"id": "1",
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z",
"author": {
"type": "people",
"id": "42",
"name": "John",
"age": 80,
"gender": "male"
}
}
]
Serialization
To turn an dict into JSON API specification document the root of your object must contain a $type key with a value corresponding to the name of the object’s resource type. Any sub-dict or sub-array of dicts that also contain a $type key will be considered an included documents and serialized accordingly.
[
{
"$type": "articles",
"id": "1",
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z",
"author": {
"$type": "people",
"id": "42",
"name": "John",
"age": 80,
"gender": "male"
}
}
]
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z"
},
"relationships": {
"author": {
"data": {"id": "42", "type": "people"}
}
}
}],
"included": [
{
"type": "people",
"id": "42",
"attributes": {
"name": "John",
"age": 80,
"gender": "male"
}
}
]
}
Usage as python module
import json_api_doc
document = {
'data': {
'type': 'article',
'id': '1',
'attributes': {
'name': 'Article 1'
}
}
}
json_api_doc.deserialize(document)
import json_api_doc
document = {
'$type': 'article',
'id': '1',
'name': 'Article 1'
}
json_api_doc.serialize(document)
Usage as cli
$ jsonapidoc document.json
Contributors
Julien Duponchelle (https://github.com/noplay)
Antonio Martinović (https://github.com/TopHatCroat)
Jeff Zellman (https://github.com/jzellman)
Brenda Deely (https://github.com/brendadeely)
Taylor Hobbs (https://github.com/TayHobbs)
Licence
Free software: Apache Software License 2.0
Documentation
Full Documentation is available: https://json-api-doc.readthedocs.io.
Metadata
Release files for json-api-doc 0.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| json-api-doc-0.15.0.tar.gz | 4.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| json_api_doc-0.15.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 11.1 kB
Release files / json-api-doc-0.15.0.tar.gz
| Download URL | json-api-doc-0.15.0.tar.gz |
|---|---|
| Size | 4.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1cbbf34d04b7768bf0de187363333a1c96294588e778f722a98ef60765458a9c
|
|
BLAKE2b-256 checksum How to use checksums |
825ff2fea5059a8e60e38712eafbfda3fd254ca8f2c44c3b5b3dd94c398ae672
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.7
|
Release files / json_api_doc-0.15.0-py2.py3-none-any.whl
| Download URL | json_api_doc-0.15.0-py2.py3-none-any.whl |
|---|---|
| Size | 6.1 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
4a9abc840c8706b17057be8e99958821a133040e891bdb5beac0abe045ab6b1d
|
|
BLAKE2b-256 checksum How to use checksums |
4b3033f9ccb7e265ff98e17e1662d2871322ea7adbc73d9c8c69ef4d9d5605a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.7
|