如何在Ruby中从GData JSON访问对象数组?

如何在Ruby中从GData JSON访问对象数组?,ruby,json,gdata,jekyll,liquid,Ruby,Json,Gdata,Jekyll,Liquid,我正在尝试编写一个Jekyll扩展,它将嵌入来自博客的评论。 我能够以JSON的形式获取评论提要,并对其进行足够的处理,以提取出评论的总数。然而,我还没有弄清楚如何处理提要中的每条评论 json\u url=”http://www.blogger.com/feeds/8505008/593465383646513269/comments/default/?alt=json" json\u rep=Net::HTTP.get\u响应(json\u url) json_rep=json.parse(

我正在尝试编写一个Jekyll扩展,它将嵌入来自博客的评论。
我能够以JSON的形式获取评论提要,并对其进行足够的处理,以提取出评论的总数。然而,我还没有弄清楚如何处理提要中的每条评论

json\u url=”http://www.blogger.com/feeds/8505008/593465383646513269/comments/default/?alt=json"
json\u rep=Net::HTTP.get\u响应(json\u url)
json_rep=json.parse(json_rep.body)
json_rep['feed']['openSearch$totalResults']['$t']#=>“4”
json#u rep['feed']['entry'].class#=>数组
json_rep['feed']['entry'].长度
#=>液体异常:post中nil:NilClass的未定义方法“length”
这是我第一次用Ruby编写代码。我做错了什么

以下是报告的相关部分

{
“提要”:{
“openSearch$totalResults”:{
$t:“4”
},
“条目”:[
{
“id”:{
$t:“tag:blogger.com,1999:blog-8505008.post-491866073982779922”
},
“已出版”:{
“$t”:“2013-01-08T15:23:47.322-04:00”
},
“内容”:{
“类型”:“html”,
$t:“最近,我姐姐更新的次数比我多。\u00dcber我失败了。:p”
}
}
]
}
}

这是您应该考虑的操作:

require 'rubygems'
require 'json'
require 'net/http'
require 'net/https'
require 'uri'

url = "http://www.blogger.com/feeds/8505008/593465383646513269/comments/default/?alt=json"
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)

json_rep = JSON.parse(response.body)

puts json_rep['feed']['openSearch$totalResults']['$t']

entries = json_rep['feed']['entry']
entries.each do |entry|
    puts entry["id"]["$t"]
    #add what ever code you like here
end 
这将产生:

4
tag:blogger.com,1999:blog-8505008.post-491866073982779922
tag:blogger.com,1999:blog-8505008.post-4792479891671746788
tag:blogger.com,1999:blog-8505008.post-4766604955439002209
tag:blogger.com,1999:blog-8505008.post-5484003770204916000

这是您应该关注的操作:

require 'rubygems'
require 'json'
require 'net/http'
require 'net/https'
require 'uri'

url = "http://www.blogger.com/feeds/8505008/593465383646513269/comments/default/?alt=json"
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)

json_rep = JSON.parse(response.body)

puts json_rep['feed']['openSearch$totalResults']['$t']

entries = json_rep['feed']['entry']
entries.each do |entry|
    puts entry["id"]["$t"]
    #add what ever code you like here
end 
这将产生:

4
tag:blogger.com,1999:blog-8505008.post-491866073982779922
tag:blogger.com,1999:blog-8505008.post-4792479891671746788
tag:blogger.com,1999:blog-8505008.post-4766604955439002209
tag:blogger.com,1999:blog-8505008.post-5484003770204916000

entries.each do | entry |#=>液体异常:在post
entry
中为nil:NilClass未定义的方法'each'当然是
feed
的子对象。因此,这是第一种方法。如果您得到一个
null
错误,这意味着
entry
变量中没有数据。您可以发布整个JSON提要吗?我觉得我们谈论的路径是不正确的。entries.each do | entry | entry |#=>液体异常:在post
entry
中为nil:NilClass未定义的方法'each'当然是
feed
的子方法。因此,这将是第一种方法。如果您得到一个
null
错误,这意味着
entry
变量中没有数据。您可以发布整个JSON提要吗?我觉得我们谈论的道路是不正确的。