HeWhoProtects
HeWhoProtects

Reputation: 487

Converting Jsonp to Json in different methods

I been trying to use JSONP data in a json format in a ruby project.

From your experiences how did you address this?

Upvotes: 0

Views: 454

Answers (2)

the Tin Man
the Tin Man

Reputation: 160559

JSONP is easy to handle. It's just JSON in a minor wrapper, and that wrapper is easy to strip off:

require 'open-uri'
require 'json'

URL = 'http://www.google.com/dictionary/json?callback=a&sl=en&tl=en&q=epitome'
jsonp = open(URL).read

jsonp now contains the result in JSONP format:

jsonp[0, 3] # => "a({"
jsonp[-11 ... -1] # => "},200,null"

Those extraneous parts, a{ and ,200,null" are the trouble spots when passing the data to JSON for parsing, so we strip them.

A simple, greedy, regex is all that's needed. /{.+}/ will find everything wrapped by the outermost curly-braces and return it, which is all the JSON needs:

data = JSON.parse(jsonp[/{.+}/])

data['query'] # => "epitome"
data['primaries'].size # => 1

Upvotes: 1

HeWhoProtects
HeWhoProtects

Reputation: 487

From my experience, one way is to use this regex to filter out the function callback name:

/(\{.*\})/m

or the lazy way would be find the index of the first occurrence of "(" and just substring it with last character, which would be a ")" .

I been trying to look for answers on here, didn't get a solid answer, hope this helps.

Cheers

Upvotes: 0

Related Questions