Ruby on rails 使用JBuilder(Ruby),如何创建哈希数组

Ruby on rails 使用JBuilder(Ruby),如何创建哈希数组,ruby-on-rails,ruby,json,jbuilder,Ruby On Rails,Ruby,Json,Jbuilder,我使用的是JBuilder Ruby,我想创建一个JSON哈希,结果如下: "must" : { "ids" : { "values" : [1,2] }, "range" : { "visits" : { "gte" : 10 } } } 请记住,我没有可迭代的现有数组。我看过的所有例子都假设我有一个数组。我不。我想动态创建这个JSON。我不建议对静态数据使用Jbuilder。J

我使用的是JBuilder Ruby,我想创建一个JSON哈希,结果如下:

"must" : {
   "ids" : {
       "values" : [1,2]
   },
   "range" : {
       "visits" : 
         {
           "gte" : 10
         }

   }
}

请记住,我没有可迭代的现有数组。我看过的所有例子都假设我有一个数组。我不。我想动态创建这个JSON。

我不建议对静态数据使用Jbuilder。Jbuilder的全部目的是提供一个DSL,用于将复杂对象图转换为JSON。在这种情况下,您不妨直接将Ruby哈希转换为JSON:

require 'json' # You'll need some type of JSON library which provides `Hash#to_json`
{
  must: {
    ids: {
      values: [1, 2]
    },
    range: {
      visits: {
        gte: 10
      }
    }
  }
}.to_json
为了便于学习,以下是如何使用Jbuilder手动构建相同的JSON字符串:

json = Jbuilder.new

json.set! :object do
  json.set! :must do
    json.set! :ids, [1, 2]
  end
  json.set! :range do
    json.set! :visits do
      json.set! :gte, 10
    end
  end
end.to_json # Note that Jbuilder even returns a Hash that need to be converted

你的输入数据是什么样子的?我没有输入,这就是我说我没有现有数组的意思。我想动态创建这个JSON。我没有任何对象。假设我有一块空白的石板要处理,我想创建一个JSON响应,它看起来和我上面粘贴的一样,带有硬编码的值。