Golang中如何将json.Number转换为int64
Golang中如何将json.Number转换为int64
func main() {
fmt.Println("hello world")
}
你好,我正在获取一个JSON响应,并使用Unmarshal来获取JSON响应中的时间戳。现在我需要获取该时间戳并进行除法运算。在Stack Overflow帖子的评论中,他们建议使用json.Number.Int64。我是Go语言的新手,不知道该怎么办。我尝试了:
token.ExpiresOnTimestamp.Int64()
fmt.Println(" -string ", token)
但不知道接下来该怎么做。
更多关于Golang中如何将json.Number转换为int64的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
现在我需要获取那个时间戳并对其进行分割
你具体是什么意思? 能否提供一个你接收到的数据示例以及期望的结果?
更多关于Golang中如何将json.Number转换为int64的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
要将 json.Number 转换为 int64,可以使用 Int64() 方法。这个方法会返回 int64 值和一个错误,你需要处理可能的错误。以下是示例代码:
package main
import (
"encoding/json"
"fmt"
)
func main() {
// 假设你有一个包含 json.Number 的结构体
type Token struct {
ExpiresOnTimestamp json.Number `json:"expires_on_timestamp"`
}
jsonStr := `{"expires_on_timestamp": "1640995200"}`
var token Token
// 解析 JSON
err := json.Unmarshal([]byte(jsonStr), &token)
if err != nil {
panic(err)
}
// 将 json.Number 转换为 int64
timestamp, err := token.ExpiresOnTimestamp.Int64()
if err != nil {
panic(err)
}
// 进行除法运算
result := timestamp / 1000
fmt.Println("转换后的时间戳:", timestamp)
fmt.Println("除法运算结果:", result)
}
如果你的 json.Number 是直接获取的而不是通过结构体,可以这样处理:
package main
import (
"encoding/json"
"fmt"
)
func main() {
jsonStr := `{"expires_on_timestamp": "1640995200"}`
var data map[string]json.Number
err := json.Unmarshal([]byte(jsonStr), &data)
if err != nil {
panic(err)
}
timestamp, err := data["expires_on_timestamp"].Int64()
if err != nil {
panic(err)
}
result := timestamp / 1000
fmt.Println("转换结果:", result)
}
注意:Int64() 方法会处理 JSON 数字字符串(如 "1640995200")和纯数字(如 1640995200)两种情况。如果转换失败(例如字符串不是有效的数字),会返回错误。

