我正在嘗試在我用 Go 編寫的 REST API 中解碼傳入的 JSON。我正在使用decoder.Decode()函數(shù),我的問題是我需要對解碼過程中應(yīng)該使用哪個結(jié)構(gòu)應(yīng)用某些規(guī)則,因?yàn)橛袝r JSON 包含:"type": { "type" : "string", "maxLength" : 30},而有時:"type": { "type" : "integer", "max" : 30, "min" : 10},我不知何故需要告訴 Go“如果 type.type 是字符串,則使用這個結(jié)構(gòu)(type Type_String struct),如果 type.type 是整數(shù),使用其他結(jié)構(gòu)(type Type_Integer struct)”。我真的不知道該怎么做。我想到的一個解決方案是創(chuàng)建一個具有所有可能屬性的通用結(jié)構(gòu),在任何類型的對象上使用它,然后根據(jù)該type屬性過濾屬性,但這太臟了。我想我也可以編寫自己的解碼器,但這似乎也有點(diǎn)奇怪。我是 Go 的新手,我非常習(xí)慣 JavaScript 提供的自由。
2 回答

森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個贊
首先,如果“type”的字段取決于“type.type”,在我看來,最好將其向上移動一級。就像是:
...
"type" : "integer",
"intOptions": {
"max" : 30,
"min" : 10
},
....
然后你可以創(chuàng)建一個只有一個字段的結(jié)構(gòu):
type Type struct {
Type string
}
并執(zhí)行以下操作:
myType := new(Type)
json.Unmarshal([]byte(yourJsonString), myType)
現(xiàn)在,根據(jù) myType 的值,您可以使用不同的結(jié)構(gòu)來解碼您的 json。
- 2 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報
0/150
提交
取消