gpt4 book ai didi

json - 根据参数值在 Golang 中解码传入的 JSON

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

我正在尝试在用 Go 编写的 REST API 中解码传入的 JSON。我正在使用 decoder.Decode() 函数,我的问题是我需要对在解码过程中应该使用哪个结构应用特定规则,因为有时 JSON 包含:

"type": {
"type" : "string",
"maxLength" : 30
},

有时:

"type": {
"type" : "integer",
"max" : 30,
"min" : 10
},

我不知何故需要告诉 Go “如果 type.type 是字符串,使用这个结构(type Type_String struct),如果 type.type 是整数,使用其他结构(输入 Type_Integer 结构)”。我不太确定该怎么做。我想到的一个解决方案是制作一个具有所有可能属性的通用结构,将其用于任何类型的对象,然后根据 type 属性过滤属性,但这太脏了。我想我也可以编写自己的解码器,但这似乎也有点奇怪。

我是 Go 的新手,我已经习惯了 JavaScript 提供的自由。

最佳答案

首先,如果“type”的字段依赖于“type.type”,在我看来,最好将它向上移动一级。像这样的东西:

...
"type" : "integer",
"intOptions": {
"max" : 30,
"min" : 10
},
....

然后你可以创建一个只有一个字段的结构:

type Type struct {
Type string
}

然后做类似的事情:

myType := new(Type)
json.Unmarshal([]byte(yourJsonString), myType)

现在,根据 myType 的值,您可以使用不同的结构来解码您的 json。

关于json - 根据参数值在 Golang 中解码传入的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27643341/

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