我正在尝试在我用 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 Type_Integer struct)”。我真的不知道该怎么做。我想到的一个解决方案是创建一个具有所有可能属性的通用结构,在任何类型的对象上使用它,然后根据该type属性过滤属性,但这太脏了。我想我也可以编写自己的解码器,但这似乎也有点奇怪。我是 Go 的新手,我非常习惯 JavaScript 提供的自由。
2 回答
森林海
TA贡献2011条经验 获得超2个赞
首先,如果“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。
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消