gpt4 book ai didi

json - 部分序列化结构的最佳方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:51:49 25 4
gpt4 key购买 nike

我使用了 gorm 库。

gorm 支持结构数据插入数据库并返回。

但我的服务并不总是需要每个结构成员。

例如;

/Address => 此 api 将仅返回用户地址。

但是 orm 返回所有的结构体。

像这样。

    type User {
Name string
Address string
}

db.find(&user)

apiResponse(200,user)

所以我总是为特定的 api 返回形状制作序列化程序代码。

    type Serializer  {
Address string
}

func MakeSerializer(User u) Serializer {
return Serilizer { Address: u.Address }
}

但是上面的代码并不好。

因为大多数 Api 返回形状都是不同的。所以我需要大量的 serilzer 代码。

显示此问题的最佳实践。

谢谢你

最佳答案

您可以使用 json:"-" 标记从结构的 JSON 序列化中删除字段,但我更喜欢对数据库层和 rest 接口(interface)使用不同的结构。

像这样:

type Construction struct {
gorm.Model

Name string `gorm:"size:30;unique_index"`
Description string `gorm:"size:100"`
}

type Construction struct {
Id uint `json:"Id"`
Name string `json:"Name"`
Description string `json:"Description"`
Additions string `json:"Additions"`
}

func setConstructionFields(ct types.Construction, construction *models.Construction, additions string) types.Construction {
ct.Name = construction.Name
ct.Description = construction.Description
ct.Additions = additions
return ct
}

在这种情况下,你需要有两个结构而不是一个,你需要编写一个函数来将一个结构转换为另一个结构,但是你在处理数据时有更大的灵 active ,并且你的数据库层与休息服务的连接较少层。

关于json - 部分序列化结构的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54059688/

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