gpt4 book ai didi

ruby-on-rails - Ruby 数据结构呈现某种 JSON 格式

转载 作者:行者123 更新时间:2023-12-04 06:06:15 24 4
gpt4 key购买 nike

[
{
"id":"123",
"name":"House"
},
{
"id":"1456",
"name":"Desperate Housewives"
},
{
"id":"789",
"name":"Dollhouse"
},
{
"id":"10",
"name":"Full House"
}
]

如何在 Ruby 中渲染以生成此 JSON 格式?我拥有来自数据库(@result)的所有数据,但不知道在 Ruby 中使用什么数据结构来呈现此数据:

respond_to do |format|    
format.json { render :json => @result}
end

@result 应该是什么数据结构以及如何迭代来生成它?谢谢!

最佳答案

如果@result是ActiveRecord模型实例的数组,那么render :json => @result将生成类似于您之后的内容,但将包含所有属性模型的(render 对您传递的对象调用 to_json,除非它是字符串)。

要仅包含 id 和 name 属性,您可以使用 to_json:only 参数:

respond_to do |format|    
format.json { render :json => @result.to_json(:only => [:id, :name] }
end

或者,您可以创建仅包含所需属性的 Hash 对象数组:

respond_to do |format|    
format.json { render :json =>
@result.collect {|o| {:id => o.id, :name => o.name} } }
end

编辑:请参阅下面@dt 的评论。模型中有一个名为text的属性需要作为name输出。这可以通过为模型中的文本创建别名来完成:

class Model < ActiveRecord::Base
alias_method :name, :text

并使用 :methods 包含名称:

respond_to do |format|    
format.json { render :json => @result.to_json(:only => :id, :methods => :name }
end

或者,可以使用哈希数组方法来重命名属性:

respond_to do |format|    
format.json { render :json =>
@result.collect {|o| {:id => o.id, :name => o.text} } }
end

关于ruby-on-rails - Ruby 数据结构呈现某种 JSON 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2663883/

24 4 0
文章推荐: jsf-2 - 如何在 JSF 2.0 中制作下载文件?
文章推荐: admin-on-rest - "Unable to retrieve API documentation"api-platform 管理员
文章推荐: windows-8 - 在 Windows 8 应用程序中保存 List 的最佳方法是什么