1 回答

TA貢獻1810條經驗 獲得超4個贊
您可以定義一個自定義json.Marshaler接口來執行此操作,例如:
type mapInfo struct {
Name string `json:"name"`
Date string `json:"date"`
}
type CustomMap map[string]string
func (cm CustomMap) MarshalJSON() ([]byte, error) {
// if you want to optimize you can use a bytes.Buffer and write the strings out yourself.
var out struct {
Map []mapInfo `json:"map"`
}
for k, v := range cm {
out.Map = append(out.Map, mapInfo{k, v})
}
return json.Marshal(out)
}
func (cm CustomMap) UnmarshalJSON(b []byte) (err error) {
var out struct {
Map []mapInfo `json:"map"`
}
if err = json.Unmarshal(b, &out); err != nil {
return
}
for _, v := range out.Map {
cm[v.Name] = v.Date
}
return
}
playground
- 1 回答
- 0 關注
- 238 瀏覽
添加回答
舉報