ToodledoAPI 2.0中的Ruby Sinatra和JSON对象

ToodledoAPI 2.0中的Ruby Sinatra和JSON对象,ruby,json,sinatra,Ruby,Json,Sinatra,我在接收JSON对象时遇到了一个小问题。我使用的是Ruby 1.9.3,我的目标是通过API接收我的任务,并将它们打印到页面上 我创建了一个路由/test: get '/test' do json_ip_url = "http://api.toodledo.com/2/tasks/get.php?key=198196ae24792467eec09ac2191*****;modafter=1234567890;fields=folder,star,priority" ip_detail

我在接收JSON对象时遇到了一个小问题。我使用的是Ruby 1.9.3,我的目标是通过API接收我的任务,并将它们打印到页面上

我创建了一个路由
/test

get '/test' do
   json_ip_url = "http://api.toodledo.com/2/tasks/get.php?key=198196ae24792467eec09ac2191*****;modafter=1234567890;fields=folder,star,priority"
   ip_details = RestClient.get(json_ip_url)
   test = JSON.pretty_generate(ip_details) # => throws exception
end
JSON#pretty_generate
行抛出一个错误,“只允许生成JSON对象或数组”。我做错了什么

更新:

我现在可以通过pretty_generate进行输出,但是我必须做什么才能获得它的元素呢。这是JSON数据,在我看来,它是一个包含对象的数组

[{"num":"18","total":"18"},{"id":"11980343","title":"Add some items to your todo list","modified":1391670256,"completed":0,"folder":"0","star":"0"},{"id":"11980345","title":"Visit the Settings section and configure your account","modified":1391670256,"completed":0,"folder":"0","star":"0"},{"id":"11980347","title":"Watch our tutorial videos in the Help section","modified":1391670256,"completed":0,"folder":"0","star":"1"},{"id":"12607789","title":"test","modified":1392285802,"completed":0,"folder":"0","star":"0"},{"id":"12636039","title":"My Task","modified":1392308705,"completed":0,"folder":"0","star":"0"},{"id":"12636041","title":"Another","modified":1392308705,"completed":0,"folder":"0","star":"1"},{"id":"12636143","title":"My Task","modified":1392308789,"completed":0,"folder":"0","star":"0"},{"id":"12636145","title":"Another","modified":1392308789,"completed":0,"folder":"0","star":"1"},{"id":"12636449","title":"My Task","modified":1392308950,"completed":0,"folder":"0","star":"0"},{"id":"12636451","title":"Another","modified":1392308950,"completed":0,"folder":"0","star":"1"},{"id":"12636621","title":"My Task","modified":1392309061,"completed":0,"folder":"0","star":"0"},{"id":"12636623","title":"Another","modified":1392309061,"completed":0,"folder":"0","star":"1"},{"id":"12636665","title":"My Task","modified":1392309085,"completed":0,"folder":"0","star":"0"},{"id":"12636667","title":"Another","modified":1392309085,"completed":0,"folder":"0","star":"1"},{"id":"12636733","title":"My Task","modified":1392309137,"completed":0,"folder":"0","star":"0"},{"id":"12636735","title":"Another","modified":1392309137,"completed":0,"folder":"0","star":"1"},{"id":"12637135","title":"My Task","modified":1392309501,"completed":0,"folder":"0","star":"0"},{"id":"12637137","title":"Another","modified":1392309501,"completed":0,"folder":"0","star":"1"}]
我用于生成的代码:

     get '/save' do
   jdata = params[:data]
   response = RestClient.get 'http://api.toodledo.com/2/tasks/get.php?key=da21e24e2a00ba9d45008974aed00***;modafter=1234567890;fields=folder,star,priority', {:accept => :json}
    test = JSON.parse(response)
    test.to_json
     output = JSON.pretty_generate(test)
    puts output

RestClient#get
在调用时以字符串(而不是哈希或数组)的形式返回原始响应,因此
ip#u details
不是一个
JSON#pretty#u generate
知道如何处理的结构。您需要先使用
JSON#parse
将响应转换为哈希或数组。

谢谢,但老实说,我不知道我是否理解正确,我需要RestClient#接收我的数据,如果我尝试用JSON#parse解析它,我会在/test未定义的{“num”=>“18”方法'bytesize'处遇到另一个错误
code
NoMethodError,“total”=>“18”}:Hash也许还有其他方法可以从API获取数据?正如您所说,RestClient返回原始响应,有其他方法吗?感谢您的帮助!@user3306721编辑您的问题,并输入修改后的代码和错误消息(请相应地格式化它们)