Ruby解析解析的响应

时间:2016-03-25 18:57:28

标签: ruby json parsing

第一次搞乱红宝石。

我正在使用的库有这个

require 'net/http/post/multipart'
require 'uri'

    def find(issue_id)
      get("issue/#{issue_id}")
      response.parsed_response
    end

我在我的文件中用它

puts issue_resource.find("XVRCI-42")

打印

{"问题" => {"字段" => [{"值" =>" XVRCI&#34 ;,"输入" =>" SingleField"," name" =>" projectShortName"},{" value&# 34; =>" 42","输入" =>" SingleField"," name" =>" numberInProject& #34;},{"值" =>"使用Short Changelog生成脚本添加CHANGELOG.MD","键入" =>" SingleField& #34;,"名称" =>"摘要"},{"值" =>"我们需要在root和脚本上更改日志当我们推出现在的XVRClient线束和新版本时,会产生一个简短的更改日志。","键入" =>" SingleField"," name" = >"说明"}等...}]," id" =>" XVRCI-42"," entityId" => ;" 66-4857"}}

我认为这是json并解析。 所以我尝试添加require 'json'并运行

respons = JSON.parse(issue_resource.find("XVRCI-42"))
puts respons["field"][0]["name"]

它没有用

如何在此处获取摘要字段并获取"使用Short Changelog生成脚本添加CHANGELOG.MD"在一个字符串变量?

########编辑答案

感谢马丁原来是哈希

所以

#get the summary field
file['issue']['field'].each do |item|
   if item['name'] == "summary"
     puts item['value']
  end
end

为我工作

2 个答案:

答案 0 :(得分:2)

根据您的消息来源,您需要的是:

puts respons["issue"]["field"][0]["name"]

答案 1 :(得分:1)

Enumerable#find就是你想要的。

response['issue']['field'].find {|x| x['name'] == 'summary'}
=> {"value"=>"Add CHANGELOG.MD with Short Changelog Generation Script", "type"=>"SingleField", "name"=>"summary"}