1 回答

TA贡献1725条经验 获得超7个赞
如果数据来自 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 关注
- 253 浏览
添加回答
举报