如何一次访问jsonpath中的多个键

时间:2014-01-01 12:49:40

标签: ruby jsonpath

我在配置中存储哈希路径(在JsonPath中使用ruby),在一种情况下,我需要为一个变量获取多个字段。

示例:

{
 "a" => 1,
 "b" => 2,
 "c" => 3,
 "d" => 4,
 "e" => 5,
}

对于一个变量,我需要将值设为3-4-5。有没有办法一次性从"c"访问"d""e"JsonPath

$$$$$$$$$$$$$编辑$$$$$$$$$$$$$

目前看来这是jsonpath gem的限制,请随意以其他宝石/方式建议。

2 个答案:

答案 0 :(得分:2)

是..如下所示使用Hash#values_at

hsh = {
 "a" => 1,
 "b" => 2,
 "c" => 3,
 "d" => 4,
 "e" => 5,
}

hsh.values_at("c","d","e").join('-')
# => "3-4-5"

答案 1 :(得分:-1)

我通过编写一个小函数来解决此问题,该函数将参数作为逗号分隔路径的多个路径的数组并返回这些路径的值,以下是代码: -

def find_multiple_path hash, path
  return path.inject([]){|tmp,p| tmp<< JsonPath.on(hash, p)}.flatten.join("-") if path and path.kind_of?(Array)

  return path.split(",").inject([]){|tmp,p| tmp<< JsonPath.on(hash, p)}.flatten.join("-") if path and path.include?(",") and path.include?("$")
end

路径可以是[&#34; $。c&#34;,&#34; $。d&#34;,&#34; $。e&#34;]或&#34; $。c 。,$ d,$ E&#34;