rctneil
rctneil

Reputation: 7220

Standardising json

I am using HTTParty to call the Flickr API. I get a response but it's escaped. How can I get plain and simple json?>

class Flickr

  require 'httparty'
  include HTTParty

  API_KEY         = '2e18b933c285b552701e7c6f5bff3aee'
  SECRET          = '88123767bb4492b2'
  USER_ID         = '57951266@N03'
  RESPONSE_FORMAT = 'json'
  base_uri          'http://api.flickr.com'

  # Get list of all collections
  def self.collections_list
    response = get("/services/rest/",
      :query => {
        method:          'flickr.collections.getTree',
        api_key:         API_KEY,
        user_id:         USER_ID,
        format:          RESPONSE_FORMAT,
        nojsoncallback:  1
      }
    )

    response.body

  end

Here is what response.body returns: How can I disable the escaping that prevents it from being valid json?

=> "{\"collections\":{\"collection\":[{\"id\":\"579244212-72157632934521433434033423\", \"title\":\"mysite.co.uk\", \"description\":\"\", \"iconlarge\":\"\/images\/collection_default_l.gif\", \"iconsmall\":\"\/images\/collection_default_s.gif\", \"collection\":[{\"id\":\"5723456928212-72157634949706778\", \"title\":\"Holidays\", \"description\":\"\", \"iconlarge\":\"\/images\/collection_default_l.gif\", \"iconsmall\":\"\/images\/collection_default_s.gif\", \"collection\":[{\"id\":\"5792364528212-7215763492346543457291\", \"title\":\"Standard\", \"description\":\"\", \"iconlarge\":\"\/images\/collection_default_l.gif\", \"iconsmall\":\"\/images\/collection_default_s.gif\", \"set\":[{\"id\":\"72157628982366181735\", \"title\":\"Paris Trip\", \"description\":\"11th-13th May 2008 - (Peeps)\"}, {\"id\":\"72157629097324306\", \"title\":\"Ohio\", \"description\":\"August 2005 - (Peeps)\"}, {\"id\":\"72157629097297760\", \"title\":\"Iceland Holiday\", \"description\":\"5th-16th Aug 2004 - (Peeps)\"}]}, {\"id\":\"57928212-236572157629691182748\", \"title\":\"1 - Trip\", \"description\":\"\", \"iconlarge\":\"\/images\/collection_default_l.gif\", \"iconsmall\":\"\/images\/collection_default_s.gif\", \"set\":[{\"id\":\"72157629683532365562\", \"title\":\"Day 1\", \"description\":\"\"}, {\"id\":\"72157629683246523541696\", \"title\":\"Day 2\", \"description\":\"\"}, {\"id\":\"7215762968234563554852\", \"title\":\"Day 3\", \"description\":\"\"}, {\"id\":\"7215762972346510465912\", \"title\":\"Day 4\", \"description\":\"\"}, {\"id\":\"72157362629710474644\", \"title\":\"Day 5 South\", \"description\":\"\"}, {\"id\":\"7215762923564710489442\", \"title\":\"Day 6 \", \"description\":\"\"}, {\"id\":\"721576292346834618028\", \"title\":\"Day 7 i\", \"description\":\"\"}, {\"id\":\"721576265349834637138\", \"title\":\"Day 8\", \"description\":\"\"}, {\"id\":\"72157629236836419418\", \"title\":\"Day 9\", \"description\":\"\"}, {\"id\":\"7215762985641123596\", \"title\":\"Day 10\", \"description\":\"\"}, {\"id\":\"72157629854631700916\", \"title\":\"Day 11 & 12\", \"description\":\"\"}, {\"id\":\"721576223649851713058\", \"title\":\"Day 13,14 & 15 -\", \"description\":\"\"}]}, {\"id\":\"57928212-72236157629866347760\", \"title\":\"2 - Trip 2010\", \"description\":\"\", \"iconlarge\":\"\/images\/collection_default_l.gif\", \"iconsmall\":\"\/images\/collection_default_s.gif\", \"set\":[{\"id\":\"721576292346866337538\", \"title\":\"Day 0 - Arrival ....

Upvotes: 0

Views: 106

Answers (1)

Philip Hallstrom
Philip Hallstrom

Reputation: 19899

response.to_json will give you proper JSON. JSON.parse(response.to_json) will turn that JSON into a ruby hash of hashes/arrays/etc.

Upvotes: 1

Related Questions