从JBuilder中的哈希生成JSON数组

时间:2013-09-19 16:38:49

标签: ruby-on-rails ruby json jbuilder

给出以下Ruby数据结构:

data = { :a => 1, :b => 2 }

...我想创建以下JSON:

{"result":[
  {"letter":"a","number":"1"},
  {"letter":"b","number":"2"}
]}

如何使用Rails的JBuilder完成此操作?

理想情况下,我想直接从Hash转到JBuilder对象,而不是先将Hash转换为数组。

2 个答案:

答案 0 :(得分:6)

这很容易。

require 'jbuilder'

data = { :a => 1, :b => 2 }

out = Jbuilder.encode do |json|
    json.result data do |kv|
        json.letter kv[0]
        json.number kv[1]
    end
end

puts out  #=> {"result":[{"letter":"a","number":1},{"letter":"b","number":2}]}

答案 1 :(得分:3)

我更喜欢这种表示法,因为它将键与值隔离开来:

require 'jbuilder'

data = { :a => 1, :b => 2 }

Jbuilder.encode do |json|
    json.result data do |k, v|
        json.letter k
        json.number v
    end
end

基本上与之前的答案相同,但更简单