0

假设我有一个 json 结构列表,例如

{ "S1" => "foo", "R2" => "bar", "S2" => "baz" }

我想获取“S*”键的数据,

你会如何在红宝石中做到这一点?有没有办法执行这样的任务?

谢谢,

4

2 回答 2

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/}]
于 2013-05-09T16:53:03.850 回答
3

假设您已经将 json 解析为散列,可以通过以下方式完成:

{ "S1" => "foo", "R2" => "bar", "S2" => "baz" }.select {|k,v| k.match /^S.*/}

如果这仍然是 json,则必须先使用 JSON.parse。

require "json"
JSON.parse(your_json)
于 2013-05-09T16:57:04.643 回答