我说我有一个json结构列表,例如
{ "S1" => "foo", "R2" => "bar", "S2" => "baz" }
我希望得到“S *”键的数据,
你会如何在红宝石中做到这一点?有没有办法执行这样的任务?
谢谢,
答案 0 :(得分:5)
使用select
挑选出您想要的键/值对:
{ "S1" => "foo", "R2" => "bar", "S2" => "baz" }.select{|k,v| k =~ /^S/}
结果是所需的哈希 - 如果您使用的是Ruby 1.9 / 2.0。但是,在Ruby 1.8中,这将返回一个数组数组 - 您可以使用Hash[]
将其包装回来将其转换为哈希:
start = { "S1" => "foo", "R2" => "bar", "S2" => "baz" }
Hash[start.select{|k,v| k =~ /^S/}]
答案 1 :(得分:3)
假设您已经将json解析为hash,可以这样做:
{ "S1" => "foo", "R2" => "bar", "S2" => "baz" }.select {|k,v| k.match /^S.*/}
如果这仍然是json,则必须先使用JSON.parse。
require "json"
JSON.parse(your_json)