Skip to main content

JSON:API ORM

https://img.shields.io/pypi/v/jsonapi_orm.svg CircleCI Coveralls github Documentation Status

Quick and dirty ORM that maps JSON:API responses to object attributes.

How To

Use Requests or (if you are a masochist) Python’s built-in urllib modules to make the request to your JSON:API service and from there pass the response to JSON:API ORM.

So, first install requests and this lib:

pip install requests
pip install jsonapi-orm

Switch to your Python code and use the magic!

import requests
from jsonapi_orm import response_to_obj


# list of items
r = requests.get('https://raw.githubusercontent.com/mislavcimpersak/jsonapi-orm/master/tests/responses/example_list.json')
obj = response_to_obj(r.json())

print('LIST OF ITEMS:')
for item in obj.data:
    print(item.title)
    # author is defined as a relationship
    print(item.author.twitter)


# single item
r = requests.get('https://raw.githubusercontent.com/mislavcimpersak/jsonapi-orm/master/tests/responses/example_single.json')
obj = response_to_obj(r.json())

print('SINGLE ITEM')
print(obj.data.title)
# author is defined as a relationship
print(obj.data.author.id)
print(obj.data.author.twitter)

Caveats

  • Since Python object attribute names have certain rules like not starting with a number or not containing “-” char, all such attributes can be accessed using .get() method. Ie. obj.data.author.get('first-name').

  • If relationship is not described in more detail in the included part of the response matching fails silently.

  • For now, this lib does not lazily follow relationship links or anything like that. You can of course make a new request to the given link and pass that response to JSON:API ORM.

  • For now, there is no check if response is a valid JSON:API response. But you’ll probably get that you are trying to parse an invalid response when things start to break.

  • And last, this lib requires Python 3.5 or newer.

History

0.1.8 (2018-04-06)

  • Added test config and basic tests.

0.1.7 (2018-03-25)

  • Using readme.rst for frontpage of the docs.

0.1.7 (2018-03-25)

  • Fixed pip install.

0.1.6 (2018-03-25)

  • Readme fix for pypi.

0.1.5 (2018-03-25)

  • Readme fix for pypi.

0.1.4 (2018-03-25)

  • Readme examples using slighty modified examples from jsonapi.org which are located in this repo.

0.1.3 (2018-03-25)

  • Fixed a bug when child data is non-existent.

0.1.2 (2018-03-25)

  • Fixed a bug when included is not present in response.

0.1.0 (2018-03-24)

  • First release on PyPI.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonapi-orm-0.1.8.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jsonapi_orm-0.1.8-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file jsonapi-orm-0.1.8.tar.gz.

File metadata

  • Download URL: jsonapi-orm-0.1.8.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jsonapi-orm-0.1.8.tar.gz
Algorithm Hash digest
SHA256 87756e65bfd625e8f15d9b24069a8b16f1d6da3d1469746df444ddaafb0a9118
MD5 0cbf9468bc98dc223c7d59ede70fa61b
BLAKE2b-256 63ce87d167a22c4286ce879b3edad928a7598fba46fa38cb4ceee99b881ab860

See more details on using hashes here.

File details

Details for the file jsonapi_orm-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for jsonapi_orm-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f0c82842950075d1931d17bbfe563ef562cea6b6e56bb7d1f8a717f32035e533
MD5 cde89777788fd5f9ffa4d573855864b4
BLAKE2b-256 56b9817a6d4322b3baa95594577b6e8c4645d107c4471aa661cf7fe6ec0ab1ea

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page