1 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您有類似 map[string]interface{} 的東西,那么您可以使用類型斷言訪問(wèn)這些值,例如
home, valid := msg["home"].(string)
if !valid {
return
}
這適用于簡(jiǎn)單的值。對(duì)于更復(fù)雜的嵌套結(jié)構(gòu),您可能會(huì)發(fā)現(xiàn)json.RawMessage使用自定義json.Unmarshaler. 有關(guān)非常詳細(xì)的討論,請(qǐng)參閱this。
另一個(gè)想法可能是定義一個(gè)Message由指向 Home、Bike 和 Soda 結(jié)構(gòu)的指針組成的自定義類型。如
type Home struct {
HomeStuff int
MoreHomeStuff string
}
type Bike struct {
BikeStuff int
}
type Message struct {
Bike *Bike `json:"Bike,omitempty"`
Home *Home `json:"Home,omitempty"`
}
如果您將這些設(shè)置為省略 if nil,則解組應(yīng)該只填充相關(guān)的。你可以在這里玩它。
- 1 回答
- 0 關(guān)注
- 269 瀏覽
添加回答
舉報(bào)