1

给定以下 Ruby 数据结构:

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

...我想创建以下 JSON:

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

如何使用 Rails 的 JBuilder 完成此任务?

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

4

2 回答 2

7

这很简单。

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}]}
于 2013-09-19T17:08:44.227 回答
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

与上一个答案基本相同,但更简单一些

于 2015-06-24T04:57:23.673 回答