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

时间:2013-10-29 19:25:33

标签: 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"] }

现在puts id.inspect会返回此信息:

[22514202]

如何只返回ID?我不想在id[0]之后将变量重新定义为.map

2 个答案:

答案 0 :(得分:0)

如果您知道该数组只包含一个元素,则无需使用map,这会导致您的结果成为数组。您可以直接引用它,如下所示:

id = response["sample"][0]["id"]

另外,您还可以索引地图的结果,如:

id = response["sample"].map {|s| s["id"]}[0]

答案 1 :(得分: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"}}"

如果您不使用哈希,这也可以使用

array = ["x","y"]
result = array.shift.strip