我正在嘗試在我用 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 關注
- 170 瀏覽
添加回答
舉報
0/150
提交
取消