============
JSON API Doc
============
.. image:: https://img.shields.io/pypi/v/json-api-doc.svg
:target: https://pypi.python.org/pypi/json-api-doc
.. image:: https://img.shields.io/travis/noplay/json-api-doc.svg
:target: https://travis-ci.org/noplay/json-api-doc
.. image:: https://readthedocs.org/projects/json-api-doc/badge/?version=latest
:target: https://json-api-doc.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://pyup.io/repos/github/noplay/json-api-doc/shield.svg
:target: https://pyup.io/repos/github/noplay/json-api-doc/
:alt: Updates
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:
.. code-block:: json
{
"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:
.. code-block:: json
[
{
"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.
.. code-block:: json
[
{
"$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"
}
}
]
.. code-block:: json
{
"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
----------------------
.. code-block:: python
import json_api_doc
document = {
'data': {
'type': 'article',
'id': '1',
'attributes': {
'name': 'Article 1'
}
}
}
json_api_doc.deserialize(document)
.. code-block:: python
import json_api_doc
document = {
'$type': 'article',
'id': '1',
'name': 'Article 1'
}
json_api_doc.serialize(document)
Usage as cli
------------
.. code-block:: bash
$ 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.
Raw data
{
"_id": null,
"home_page": "https://github.com/noplay/json-api-doc",
"name": "json-api-doc",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "json api",
"author": "Julien Duponchelle",
"author_email": "julien@duponchelle.info",
"download_url": "https://files.pythonhosted.org/packages/82/5f/f2fea5059a8e60e38712eafbfda3fd254ca8f2c44c3b5b3dd94c398ae672/json-api-doc-0.15.0.tar.gz",
"platform": "",
"description": "============\nJSON API Doc\n============\n\n\n.. image:: https://img.shields.io/pypi/v/json-api-doc.svg\n :target: https://pypi.python.org/pypi/json-api-doc\n\n.. image:: https://img.shields.io/travis/noplay/json-api-doc.svg\n :target: https://travis-ci.org/noplay/json-api-doc\n\n.. image:: https://readthedocs.org/projects/json-api-doc/badge/?version=latest\n :target: https://json-api-doc.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n\n.. image:: https://pyup.io/repos/github/noplay/json-api-doc/shield.svg\n :target: https://pyup.io/repos/github/noplay/json-api-doc/\n :alt: Updates\n\n\n\nThis library provides ability to transform between normalized JSON API\n(http://jsonapi.org/) documents and denormalized Python dictionary object for\neasier manipulation in code.\nAlso available as a command line utility and Python 3 module.\n\nDeserialization\n~~~~~~~~~~~~~~~\n\nFor this JSON API document:\n\n.. code-block:: json\n\n {\n \"data\": [{\n \"type\": \"articles\",\n \"id\": \"1\",\n \"attributes\": {\n \"title\": \"JSON API paints my bikeshed!\",\n \"body\": \"The shortest article. Ever.\",\n \"created\": \"2015-05-22T14:56:29.000Z\",\n \"updated\": \"2015-05-22T14:56:28.000Z\"\n },\n \"relationships\": {\n \"author\": {\n \"data\": {\"id\": \"42\", \"type\": \"people\"}\n }\n }\n }],\n \"included\": [\n {\n \"type\": \"people\",\n \"id\": \"42\",\n \"attributes\": {\n \"name\": \"John\",\n \"age\": 80,\n \"gender\": \"male\"\n }\n }\n ]\n }\n\nThe simplified version will be:\n\n.. code-block:: json\n\n [\n {\n \"type\": \"articles\",\n \"id\": \"1\",\n \"title\": \"JSON API paints my bikeshed!\",\n \"body\": \"The shortest article. Ever.\",\n \"created\": \"2015-05-22T14:56:29.000Z\",\n \"updated\": \"2015-05-22T14:56:28.000Z\",\n \"author\": {\n \"type\": \"people\",\n \"id\": \"42\",\n \"name\": \"John\",\n \"age\": 80,\n \"gender\": \"male\"\n }\n }\n ]\n\nSerialization\n~~~~~~~~~~~~~\n\nTo turn an dict into JSON API specification document the root of your object\nmust contain a `$type` key with a value corresponding to the name of\nthe object's resource type. Any sub-dict or sub-array of dicts that also\ncontain a `$type` key will be considered an included documents and serialized\naccordingly.\n\n.. code-block:: json\n\n [\n {\n \"$type\": \"articles\",\n \"id\": \"1\",\n \"title\": \"JSON API paints my bikeshed!\",\n \"body\": \"The shortest article. Ever.\",\n \"created\": \"2015-05-22T14:56:29.000Z\",\n \"updated\": \"2015-05-22T14:56:28.000Z\",\n \"author\": {\n \"$type\": \"people\",\n \"id\": \"42\",\n \"name\": \"John\",\n \"age\": 80,\n \"gender\": \"male\"\n }\n }\n ]\n\n.. code-block:: json\n\n {\n \"data\": [{\n \"type\": \"articles\",\n \"id\": \"1\",\n \"attributes\": {\n \"title\": \"JSON API paints my bikeshed!\",\n \"body\": \"The shortest article. Ever.\",\n \"created\": \"2015-05-22T14:56:29.000Z\",\n \"updated\": \"2015-05-22T14:56:28.000Z\"\n },\n \"relationships\": {\n \"author\": {\n \"data\": {\"id\": \"42\", \"type\": \"people\"}\n }\n }\n }],\n \"included\": [\n {\n \"type\": \"people\",\n \"id\": \"42\",\n \"attributes\": {\n \"name\": \"John\",\n \"age\": 80,\n \"gender\": \"male\"\n }\n }\n ]\n }\n\nUsage as python module\n----------------------\n\n.. code-block:: python\n\n import json_api_doc\n\n document = {\n 'data': {\n 'type': 'article',\n 'id': '1',\n 'attributes': {\n 'name': 'Article 1'\n }\n }\n }\n json_api_doc.deserialize(document)\n\n.. code-block:: python\n\n import json_api_doc\n\n document = {\n '$type': 'article',\n 'id': '1',\n 'name': 'Article 1'\n }\n json_api_doc.serialize(document)\n\nUsage as cli\n------------\n\n.. code-block:: bash\n\n $ jsonapidoc document.json\n\n\nContributors\n-------------\n* Julien Duponchelle (https://github.com/noplay)\n* Antonio Martinovi\u0107 (https://github.com/TopHatCroat)\n* Jeff Zellman (https://github.com/jzellman)\n* Brenda Deely (https://github.com/brendadeely)\n* Taylor Hobbs (https://github.com/TayHobbs)\n\nLicence\n--------\nFree software: Apache Software License 2.0\n\nDocumentation\n--------------\nFull Documentation is available: https://json-api-doc.readthedocs.io.\n\n\n\n",
"bugtrack_url": null,
"license": "Apache Software License 2.0",
"summary": "JSON API to document parser",
"version": "0.15.0",
"project_urls": {
"Homepage": "https://github.com/noplay/json-api-doc"
},
"split_keywords": [
"json",
"api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4b3033f9ccb7e265ff98e17e1662d2871322ea7adbc73d9c8c69ef4d9d5605a7",
"md5": "b44b7e81ea14b8079b3b012d9a368fd1",
"sha256": "4a9abc840c8706b17057be8e99958821a133040e891bdb5beac0abe045ab6b1d"
},
"downloads": -1,
"filename": "json_api_doc-0.15.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "b44b7e81ea14b8079b3b012d9a368fd1",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 6143,
"upload_time": "2020-11-06T16:01:36",
"upload_time_iso_8601": "2020-11-06T16:01:36.706859Z",
"url": "https://files.pythonhosted.org/packages/4b/30/33f9ccb7e265ff98e17e1662d2871322ea7adbc73d9c8c69ef4d9d5605a7/json_api_doc-0.15.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "825ff2fea5059a8e60e38712eafbfda3fd254ca8f2c44c3b5b3dd94c398ae672",
"md5": "f4637f1fb1de0ba31e8f4594ab59a157",
"sha256": "1cbbf34d04b7768bf0de187363333a1c96294588e778f722a98ef60765458a9c"
},
"downloads": -1,
"filename": "json-api-doc-0.15.0.tar.gz",
"has_sig": false,
"md5_digest": "f4637f1fb1de0ba31e8f4594ab59a157",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4933,
"upload_time": "2020-11-06T16:01:39",
"upload_time_iso_8601": "2020-11-06T16:01:39.373934Z",
"url": "https://files.pythonhosted.org/packages/82/5f/f2fea5059a8e60e38712eafbfda3fd254ca8f2c44c3b5b3dd94c398ae672/json-api-doc-0.15.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2020-11-06 16:01:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "noplay",
"github_project": "json-api-doc",
"travis_ci": true,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "json-api-doc"
}