Skip to content

jsonapi-rb/jsonapi-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsonapi-client

Ruby gem for consuming JSON API documents.

Status

Gem Version Build Status

Installation

# In Gemfile
gem 'jsonapi-client'

then

$ bundle

or manually via

$ gem install jsonapi-client

Usage

First, require the gem:

require 'jsonapi/client'

Then

payload = {
  "links" => {
    "self" => "http://example.com/articles",
    "next" => "http://example.com/articles?page[offset]=2",
    "last" => "http://example.com/articles?page[offset]=10"
  },
  "data" => [
    {
      "type" => "articles",
      "id" => "1",
      "attributes" => {
        "title" => "JSON API paints my bikeshed!"
      },
      "relationships" => {
        "author" => {
          "links" => {
            "self" => "http://example.com/articles/1/relationships/author",
            "related" => "http://example.com/articles/1/author"
          },
          "data" => { "type" => "people", "id" => "9" }
        },
        "comments" => {
          "links" => {
            "self" => "http://example.com/articles/1/relationships/comments",
            "related" => "http://example.com/articles/1/comments"
          },
          "data" => [
            { "type" => "comments", "id" => "5" },
            { "type" => "comments", "id" => "12" }
          ]
        }
      },
      "links" => {
        "self" => "http://example.com/articles/1"
      }
    }
  ],
  "included" => [
    {
      "type" => "people",
      "id" => "9",
      "attributes" => {
        "first-name" => "Dan",
        "last-name" => "Gebhardt",
        "twitter" => "dgeb"
      },
      "links" => {
        "self" => "http://example.com/people/9"
      }
    }, {
      "type" => "comments",
      "id" => "5",
      "attributes" => {
        "body" => "First!"
      },
      "relationships" => {
        "author" => {
          "data" => { "type" => "people", "id" => "2" }
        }
      },
      "links" => {
        "self" => "http://example.com/comments/5"
      }
    }, {
      "type" => "comments",
      "id" => "12",
      "attributes" => {
        "body" => "I like XML better"
      },
      "relationships" => {
        "author" => {
          "data" => { "type" => "people", "id" => "9" }
        }
      },
      "links" => {
        "self" => "http://example.com/comments/12"
      }
    }
  ]
}

document = JSONAPI::Client::Document.new(json_hash)

document.data[0].relationships['author'].data.attributes['first-name']
# => "Dan"

License

jsonapi-client is released under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages