1 回答

TA貢獻1725條經驗 獲得超8個贊
如果數據來自 JSON,那么您應該跳過map[string]interface{}并使用由您想要的結構實現的自定義解組器來執行您想要的操作。也許通過利用map[string]json.RawMessage. 但是map[string]interface{}結構轉換很痛苦,如果可能的話,避免它。
例如:
type VelocityStatEntryList []*VelocityStatEntry
func (ls *VelocityStatEntryList) UnmarshalJSON(data []byte) error {
var m map[string]json.RawMessage
if err := json.Unmarshal(data, &m); err != nil {
return err
}
for k, v := range m {
e := &VelocityStatEntry{Key: k}
if err := json.Unmarshal([]byte(v), e); err != nil {
return err
}
*ls = append(*ls, e)
}
return nil
}
https://go.dev/play/p/VcaW_BWXRVr
- 1 回答
- 0 關注
- 292 瀏覽
添加回答
舉報