用不同的方法将Jsonp转换为Json

时间:2013-03-18 17:22:58

标签: ruby json jsonp

我一直在尝试在ruby项目中以json格式使用JSONP数据。

根据您的经验,您是如何解决这个问题的?

2 个答案:

答案 0 :(得分:0)

根据我的经验,一种方法是使用此正则表达式过滤掉函数回调名称:

/(\{.*\})/m

或懒惰的方式是找到第一次出现的索引“(”并将其与最后一个字符子串起来,这将是一个“)”。

我一直试图在这里寻找答案,没有得到一个可靠的答案,希望这会有所帮助。

干杯

答案 1 :(得分:0)

JSONP易于处理。它只是一个小包装器中的JSON,并且该包装器很容易剥离:

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现在包含JSONP格式的结果:

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

这些无关的部分a{,200,null"是将数据传递给JSON进行解析时的麻烦点,因此我们将它们剥离。

只需要一个简单,贪婪的正则表达式。 /{.+}/将找到由最外面的花括号包裹的所有内容并将其返回,这是JSON的所有需求:

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

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