【问题标题】:Using JBuilder (Ruby), how to create an array of hashes使用 JBuilder (Ruby),如何创建散列数组
【发布时间】:2023-03-04 08:06:05
【问题描述】:

我正在使用 JBuilder Ruby,我想创建一个看起来像这样的 JSON 哈希,作为最终结果:

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

   }
}

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

【问题讨论】:

  • 你的输入数据是什么样的?
  • 我没有输入,这就是我说我没有现有数组时的意思。我想即时创建这个 JSON。我有零个对象。假设我有一张白纸可以使用,并且我想创建一个与我在上面粘贴的完全一样的 JSON 响应,并带有硬编码值。

标签: ruby-on-rails ruby json jbuilder


【解决方案1】:

我不建议将 Jbuilder 用于静态数据。 Jbuilder 的全部意义在于提供一个用于将复杂对象图转换为 JSON 的 DSL。在这种情况下,您不妨直接将 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多