
json 转 struct 时,如何将字符串转换为 time.duration?
在 go 语言中,我们会遇到将 json 数据转换成 struct 的场景。在这个过程中,我们可能需要将字符串转换为 time.duration 类型。以下是解决这个问题的两种方法:
方法 1:使用 int64 类型
time.duration 是一个 int64 类型,因此我们可以直接使用 int64 类型的字段来存储字符串表示的 time.duration。
本文档主要讲述的是JSON.NET 简单的使用;JSON.NET使用来将.NET中的对象转换为JSON字符串(序列化),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
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"`
}









