Skip to content

trainline/json-api-vanilla

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

JSON API VANILLA

Deserialize JSON API formats into vanilla Ruby objects. The simplest JSON API library at all altitudes above Earth centre.

# gem install json-api-vanilla
require "json-api-vanilla"
json = IO.read("articles.json")  # From http://jsonapi.org
doc = JSON::Api::Vanilla.parse(json)
doc.data[0].comments[1].author.last_name  # "Gebhardt"

Compare with jsonapi:

# gem install jsonapi --pre
require "jsonapi"
json = IO.read("articles.json")
doc = JSONAPI.parse(json)
comment_ref = doc.data[0].relationships.comments.data[1]
comment = doc.included.select do |obj|
  obj.type == comment_ref.type && obj.id == comment_ref.id
end[0]
author_ref = comment.relationships.author.data
author = doc.included.select do |obj|
  obj.type == author_ref.type && obj.id == author_ref.id
end[0]
author.attributes['last-name']

Documentation

JSON::Api::Vanilla.parse(json_string) returns a document with the following fields:

  • data is an object corresponding to the JSON API's data object.
  • errors is an array containing errors. Each error is a Hash.
  • links is a Hash from objects (obtained from data) to their links, as a Hash.
  • rel_links is a Hash from objects' relationships (obtained from data) to the links defined in that relationship, as a Hash.
  • meta is a Hash from objects to their meta information (a Hash).
  • find('type', 'id') returns the object with that type and that id.
  • find_all('type') returns an Array of all objects with that type.
  • keys is a Hash from objects to a Hash from their original field names (non-snake_case'd) to the corresponding object.

License

Copyright © Trainline.com Limited. All rights reserved. See LICENSE.txt in the project root for license information.

About

Deserialize JSON API formats into vanilla Ruby objects.

Resources

License

Stars

Watchers

Forks

Packages

No packages published