Deserialize JSON API formats into vanilla Ruby objects.
Ruby Makefile
Latest commit 5dab540 Nov 3, 2016 @tadast tadast committed with espadrine Parse hash with symbols as keys
Since the library allows parsing json:api docs from a hash, we need to
allow for a possibility that hash keys might be symbols. The parser
itself behaves correctly, but the naive validation was too naive.
Permalink
Failed to load latest commit information.
contributors
lib Parse hash with symbols as keys Nov 3, 2016
spec Parse hash with symbols as keys Nov 3, 2016
.gitignore
ContributorAgreement.txt Update copyright notice on source files Oct 13, 2016
Gemfile Prepare v0.1.0 gem Sep 13, 2016
LICENSE.txt Update copyright notice on source files Oct 13, 2016
Makefile Update copyright notice on source files Oct 13, 2016
NOTICE.txt
README.md Fix a typo in readme Oct 13, 2016
Rakefile Update copyright notice on source files Oct 13, 2016
json-api-vanilla.gemspec Update copyright notice on source files Oct 13, 2016

README.md

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.