给定以下 Ruby 数据结构:
data = { :a => 1, :b => 2 }
...我想创建以下 JSON:
{"result":[
{"letter":"a","number":"1"},
{"letter":"b","number":"2"}
]}
如何使用 Rails 的 JBuilder 完成此任务?
理想情况下,我想直接从 Hash 转到 JBuilder 对象,而不先将 Hash 转换为 Array。
给定以下 Ruby 数据结构:
data = { :a => 1, :b => 2 }
...我想创建以下 JSON:
{"result":[
{"letter":"a","number":"1"},
{"letter":"b","number":"2"}
]}
如何使用 Rails 的 JBuilder 完成此任务?
理想情况下,我想直接从 Hash 转到 JBuilder 对象,而不先将 Hash 转换为 Array。
这很简单。
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}]}
我更喜欢这种表示法,因为它将键与值隔离开来:
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
与上一个答案基本相同,但更简单一些