为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕勒3428872 2021-09-10 15:20:09
我正在尝试在我用 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。


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信