php中文网

JSON 转 Struct 时,如何将字符串转换为 time.Duration?

php中文网

json 转 struct 时,如何将字符串转换为 time.duration?

在 go 语言中,我们会遇到将 json 数据转换成 struct 的场景。在这个过程中,我们可能需要将字符串转换为 time.duration 类型。以下是解决这个问题的两种方法:

方法 1:使用 int64 类型

time.duration 是一个 int64 类型,因此我们可以直接使用 int64 类型的字段来存储字符串表示的 time.duration。

import "time"

type student struct {
    tim int64 `json:"time"`
}

方法 2:自定义 struct 并实现 unmarshaljson

如果希望使用 time.duration 类型的字段,但无法修改原始 struct 定义,可以创建一个自定义 struct 并实现 unmarshaljson 方法。

import "time"

type MyDuration struct {
    time.Duration
}

func (d *MyDuration) UnmarshalJSON(data []byte) error {
    // 解析字符串为 time.Duration
    duration, err := time.ParseDuration(string(data))
    if err != nil {
        return err
    }
    d.Duration = duration
    return nil
}

type Student struct {
    Tim MyDuration `json:"time"`
}

以上就是JSON 转 Struct 时,如何将字符串转换为 time.Duration?的详细内容,更多请关注php中文网其它相关文章!