【发布时间】:2012-12-05 16:40:16
【问题描述】:
我有一个想要转换为 JSON 的 Ruby FlickRaw 响应。以下是其结构的一部分:
#<FlickRaw::Response:0x7fbd11088678
@h = {
"id" => "72157628092176654",
"primary" => "6332013810",
"owner" => "8623220@N02",
"ownername" => "The Library of Congress",
"photo" => [
[ 0] #<FlickRaw::Response:0x7fbd1106a628
@h = {
"id" => "6332007340",
"secret" => "4d92733d70",
"server" => "6217",
"farm" => 7,
"title" => "Woodrow Wilson, Twenty-Eighth President of the United States (LOC)",
"isprimary" => "0"
},
attr_reader :flickr_type = "photo"
>,
要将其转换为 JSON,我想简单地采用 response.to_hash.to_json,但这会导致以下结果:
=> "{"id":"72157628092176654",
"primary":"6332013810",
"owner":"8623220@N02",
"ownername":"The Library of Congress",
"photo":["#<FlickRaw::Response:0x007fbd1106a628>","#<FlickRaw::Response:0x007fbd110704d8>","#<FlickRaw::Response:0x007fbd11079c40
...
如您所见,它仅输出#<FlickRaw::Response> 对象而不是实际内容。所以,它只是停止在那里递归。如何让它实际输出类似于我从上面的awesome_print 获得的输出,其中也显示了各个照片字段?
我尝试了以下方法,这让我得到了照片数组的正确表示:
photos.photo.map { |h| h.to_hash }.to_json
但这似乎相当复杂。有没有更简单的方法可以一次性将完整响应格式化为 JSON,而无需先修复照片数组?
【问题讨论】:
-
photos.photo.map(&:to_hash).to_json? :) -
谢谢,这修复了
photo数组,但如果可能的话,我希望一次性将整个响应转换为 JSON。我澄清了那句话!