为了账号安全,请及时绑定邮箱和手机立即绑定

解组映射结构

解组映射结构

Go
凤凰求蛊 2023-04-10 10:35:31
首先我有一个结构:type times map[time.Time]struct{}我需要为此编写Marshal/ Unmarshaljson 转换方法。我写过MarshalJSON方法,但不明白怎么写UnmarshalJSON方法。func (ts times) keys() []time.Time {    res := make([]time.Time, 0, len(ts))    for key := range ts {        res = append(res, key)    }    return res}func (ts times) MarshalJSON() ([]byte, error) {    return json.Marshal(ts.keys())}func (ts *times) UnmarshalJSON(b []byte) (error) {    // ????}  任何想法?
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

您可以使用与编码相同的方式解码 json(仅使用密钥):


func (ts *times) UnmarshalJSON(b []byte) error {

    var t []time.Time


    err := json.Unmarshal(b, &t)

    if err != nil {

        return err

    }


    for _, v := range t {

        (*ts)[v] = struct{}{}

    }


    return nil

}


但是,我强烈建议使用切片类型,而不是地图。解码后的输出是一个数组,所以类型也应该是一个数组。


查看完整回答
反对 回复 2023-04-10
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信