使用Ruby,我从API中提取响应,然后使用JSON.parse解析为结果
result = JSON.parse(response)
在get中,有额外的“元数据”和“数据”,以及输出的实际“项目”
输出类似于:
{“metadata”=> {“version”=> 5},“data”=> {“paging”=> {“total_items”=> 1,“number_of_pages”=> 1} ,“items”=> [{“type”=>“OrganizationSummary”,“uid”=>“33a97e”,“properties”=> {“name”=>“Google”}]
我想从结果中删除“元数据”和“数据”,并输出所提取项目的uid(33a97e)和名称(Google)。
最好的方法是什么?
答案 0 :(得分:0)
其中,您发布的result
哈希值存在语法错误。所以,我把它修改为:
result = {"metadata"=>{"version"=>5}, "data"=>{"paging"=>{"total_items"=>1, "number_of_pages"=>1}, "items"=>[{"type"=>"OrganizationSummary", "uid"=>"33a97e", "properties"=>{"name"=>"Google"}}]}}
两个,你说,你想从中删除data
(删除metadata
没问题),但你需要的值是uid
和name
,它们是嵌套在data
内。所以,如果你删除它,你也会丢失这些值。
我想,您只想删除paging
部分。以下是我的解决方案:
result.delete('metadata')
=> {"version"=>5}
result['data'].delete('paging')
=> {"total_items"=>1, "number_of_pages"=>1}
# Now the values you need,
# `uid`(s) - can be more than one, as `items` is an array
result['data']['items'].map { |h| h['uid'] }
=> ["33a97e"]
# `name`(s)
result['data']['items'].map { |h| h['properties']['name'] }
=> ["Google"]