【Go】在 JSON 中解析 time.Duration
在Go中,time.Duration
是一种用于记录持续时间的类型,通常以纳秒为单位。当你需要在JSON中解析或生成time.Duration
时,你可以将其视为一个数字,并使用相应的JSON编码/解码机制。
以下是一个简单的例子,展示了如何在JSON中解析time.Duration
:
package main
import (
"encoding/json"
"fmt"
"time"
)
type DurationJSON struct {
Duration time.Duration `json:"duration"`
}
func main() {
// 示例JSON数据
jsonData := `{"duration": 5000000000}` // 5秒(以纳秒为单位)
// 解码JSON数据到结构体
var durationJSON DurationJSON
if err := json.Unmarshal([]byte(jsonData), &durationJSON); err != nil {
panic(err)
}
// 输出解析后的时长
fmt.Println(durationJSON.Duration) // 输出:5s
}
在这个例子中,我们定义了一个DurationJSON
结构体,它有一个time.Duration
字段。我们使用json.Unmarshal
函数将含有时长的JSON数据解码到这个结构体。
如果你需要将time.Duration
编码为JSON,可以使用相同的方法:
package main
import (
"encoding/json"
"fmt"
"time"
)
func main() {
duration := 5 * time.Second // 5秒的时长
// 编码时长到JSON
jsonData, err := json.Marshal(duration)
if err != nil {
panic(err)
}
// 输出JSON字符串
fmt.Println(string(jsonData)) // 输出:"5000000000"
}
在这个例子中,我们直接将time.Duration
值编码为JSON。
评论已关闭