Search code examples
rubyjsongithub-api

Rails - I can't parse JSON response properly


I can't parse JSON response properly. Just showing blank page. My code is like below.

h = response.to_json
@data = h["items"][0]["login"]

JSON response

[
    ["total_count", 2782],
    ["incomplete_results", false],
    ["items", [{
      "login": "datomnurdin",
      "id": 5416242,
      "avatar_url": "https://avatars.githubusercontent.com/u/5416242?v=3",
      "gravatar_id": "",
      "url": "https://api.github.com/users/datomnurdin",
      "html_url": "https://github.com/datomnurdin",
      "followers_url": "https://api.github.com/users/datomnurdin/followers",
      "following_url": "https://api.github.com/users/datomnurdin/following{/other_user}",
      "gists_url": "https://api.github.com/users/datomnurdin/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/datomnurdin/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/datomnurdin/subscriptions",
      "organizations_url": "https://api.github.com/users/datomnurdin/orgs",
      "repos_url": "https://api.github.com/users/datomnurdin/repos",
      "events_url": "https://api.github.com/users/datomnurdin/events{/privacy}",
      "received_events_url": "https://api.github.com/users/datomnurdin/received_events",
      "type": "User",
      "site_admin": false,
      "score": 1.0
    },..

What I want is to be like this

datomnurdin

P.S: Original response from Github API using this library,https://github.com/peter-murach/github

> #<Hashie::Mash avatar_url="https://avatars.githubusercontent.com/u/5416242?v=3"
> events_url="https://api.github.com/users/datomnurdin/events{/privacy}"
> followers_url="https://api.github.com/users/datomnurdin/followers"
> following_url="https://api.github.com/users/datomnurdin/following{/other_user}" gists_url="https://api.github.com/users/datomnurdin/gists{/gist_id}"
> gravatar_id="" html_url="https://github.com/datomnurdin" id=5416242
> login="datomnurdin"
> organizations_url="https://api.github.com/users/datomnurdin/orgs"
> received_events_url="https://api.github.com/users/datomnurdin/received_events" repos_url="https://api.github.com/users/datomnurdin/repos" score=1.0
> site_admin=false
> starred_url="https://api.github.com/users/datomnurdin/starred{/owner}{/repo}" subscriptions_url="https://api.github.com/users/datomnurdin/subscriptions"
> type="User" url="https://api.github.com/users/datomnurdin">,..

Solution

  • Github library you linked returns Hashie::Mash instance.

    One should not try to convert the returned result to json (which is apparently a string,) just use:

    h = result_as_returned_by_github_library
    @data = h["items"][0]["login"]