gpt4 book ai didi

json - 将结构 slice 作为数字 slice 进行编码

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

我正在尝试找出将结构编码为 JSON 字符串的最佳方法:

type User struct {
Id string `json:"id"`
Roles []Role `json:"roles"`
}

type Role struct {
Id string `json:"-"`
Role int
}

获取 JSON 输出,如:{"id": "abc", "roles": [1, 2, 3]}

最佳答案

您可以通过实现 json.Marshaler 来实现任何自定义编码逻辑界面。

因此,只需在 Role 上实现 MarshalJSON() ([]byte, error) 方法,在其中将其编码为一个简单的 int 号码。

它可能是这样的:

func (r Role) MarshalJSON() ([]byte, error) {
return json.Marshal(r.Role)
}

如您所见,Role.MarshalJSON() 仅编码 Role.Role int 字段,而不是整个 结构

测试它:

u := User{
Id: "abc",
Roles: []Role{
Role{Id: "a", Role: 1},
Role{Id: "b", Role: 2},
Role{Id: "c", Role: 3},
},
}
if err := json.NewEncoder(os.Stdout).Encode(u); err != nil {
panic(err)
}

输出如您所愿(在 Go Playground 上尝试):

{"id":"abc","roles":[1,2,3]}

关于json - 将结构 slice 作为数字 slice 进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940943/

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