我有一个 Controller 返回一个 json 结构,如下所示:
def show
# .......
o_json = deep_object_1_to_json(o)
render :json => o_json
end
private
def deep_object_1_to_json(o)
o.to_json(
:include => {....})
end
现在我需要扩展它以返回 2 个对象。然而,显而易见的解决方案给我带来了问题:
def show
# .......
o1_json = deep_object_1_to_json(o)
o2_json = deep_object_2_to_json(o)
render :json =>
{
:object_1 => o1_json,
:object_2 => o2_json
}
end
这将返回一个带有 2 个转义 json 数据字符串的 json 对象!
deep_object_2_to_json 函数已经有多层嵌套包含,所以我宁愿不必将它们重构为单个函数。有没有办法让它很容易扩展以在将来添加更多对象而不会出现上面的双重转义问题?
感谢您的指点。
最佳答案
听起来您应该在此基础上构建 to_json
可以轻松调用。
事件记录对象的明显候选者是 as_json
.这可以完成 to_json
的所有操作确实(包括 :include
选项等等)除了实际将对象转换为 json。相反,您会返回一个 ruby 哈希,您可以根据需要对其进行操作,然后调用 to_json。例如你可以做
render :json => {
:o1 => object1.as_json(:include => :blah),
:o2 => object2.as_json(:include => :blah)
}
关于ruby-on-rails - 如何一次返回2个json对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211166/