从一个对象数组(Ruby)中删除括号

从一个对象数组(Ruby)中删除括号,ruby,arrays,hash,Ruby,Arrays,Hash,我正在从web服务调用接收JSON,如下所示: {"sample"=>[{"id"=>1, "name"=>"demo", "startDate"=>"2013-08-12T00:00:00", "endDate"=>"2014-05-28T00:00:00"}]} 我想进入这一步并获取id,所以我这样做: response = JSON.parse(url.body) id = response["sample"].map { |s| s["id"] } 现在

我正在从web服务调用接收JSON,如下所示:

{"sample"=>[{"id"=>1, "name"=>"demo", "startDate"=>"2013-08-12T00:00:00", "endDate"=>"2014-05-28T00:00:00"}]}
我想进入这一步并获取id,所以我这样做:

response = JSON.parse(url.body)
id = response["sample"].map { |s| s["id"] }
现在
put id.inspect
返回以下内容:

[2251422]


我怎样才能只返回ID?我不想在
.map

之后将变量重新定义为
id[0]
,如果您知道数组只包含一个元素,则无需使用
map
,这正是导致结果成为数组的原因。您可以直接引用它,如下所示:

id = response["sample"][0]["id"]
此外,您还可以为地图的结果编制索引,如中所示:

id = response["sample"].map {|s| s["id"]}[0]
这对我有用

[4] pry(#<Sms>)> my_hash_static
    => :body=>
      [{:mp=>
         {:msg=>
           "string1",
          :no=>"no1"}}]


    [5] pry(#<Sms>)> my_hash_static[:body]*","

    => "{:mp=>{:msg=>"string2", :no=>"no2"}}"

你为什么不直接说
id=response[“sample”][0][“id”]
Nope。一点也没有,这就解决了问题……如果你能回答我的问题,我肯定会给你一个肯定的回答:)谢谢你的提示。
array = ["x","y"]
result = array.shift.strip