Ruby检索json对象,查询

时间:2014-10-21 06:06:51

标签: jquery ruby json hash

所以我有这个带有嵌套字段的模型Foo,

<id: 1, name: "blah", condition: "{\"condition_type\":\"BAR\",\"number\":\"1\""\}">

我想获得条件类型为Bar的Foos列表。 我试过了

    JSON.parse(Foo.select(:condition)).where({"condition_type"=>"BAR"})

但不起作用。我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:1)

你的JSON中有一个轻微的语法错误(我认为最后有一个额外的引用,但是在JSON.parse(Foo.select(:condition))结束时你现在正在使用JSON对象(我认为你&# 39;重新意识到。如果你要说:

JSON.parse(Foo.select(:condition)).class你会得到一个哈希值。

[12] pry(main)> json
=> {"condition_type"=>"BAR", "number"=>"1"}
[13] pry(main)> json.class
=> Hash

总而言之,您可以在Enumerable#keep_if上使用hash这样的[26] pry(main)> json = JSON.parse(condition) => {"condition_type"=>"BAR", "number"=>"1"} [27] pry(main)> json.keep_if { |k, v| k == "condition_type" && v == "BAR" } => {"condition_type"=>"BAR"} 方法:

JSON.parse(Foo.select(:condition)).keep_if { |k, v| k == "condition_type" && v == "BAR" }

组合方法如下所示:

{{1}}