Skip to main content

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

Project description

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.

Project details


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

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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page