猿问

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

我正在尝试在我用 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 提供的自由。


慕勒3428872
浏览 139回答 2
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。
随时随地看视频慕课网APP

相关分类

Go
我要回答