gpt4 book ai didi

ruby-on-rails - 自定义 JSON 输出

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

在 Controller 中,我有一个这样的 response_with:

respond_with(@layer1 , @layer2)

我需要的 JSON 输出是这样的:
{
"LayerOne": [
{
"name": "haha",
"number":"44"
}, // more ....
],
"LayerTwo": [
{
"name": "James Bond",
"score": 20
} // , ....
]
}

所以为了获得第一部分,我像这样编写序列化程序:
class Layer1Serializer < ActiveModel::Serializer

attributes :number, :name

def name
object.person.name
end

end

我把 Controller 改成这样,所以我可以传递一个 ROOT,所以它在 J​​SON 中显示为“LayerOne”
respond_with(@Layer1, root: 'LayerOne')

但请记住,一开始我有两件事要传递给 Controller ​​,所以现在我无法弄清楚如何为 JSON 的第二部分“Layer2”执行此操作

最佳答案

您可以创建以下中间类:

class BothLayers
include ActiveModel
def initialize(layer1,layer2)
@layer1 = layer1
@layer2 = layer2
end
attr_accessor :layer1, :layer2
end

和以下序列化程序:
class BothLayersSerializer < ActiveModel::Serializer
root false
has_many :layer1, key: "LayerOne"
has_many :layer2, key: "LayerTwo"
end

然后在您的 Controller 中:
    both_layers = BothLayers.new(@layer1,@layer2)
respond_with( both_layers, serializer: BothLayersSerializer )

关于ruby-on-rails - 自定义 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com