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)两种情况。如果转换失败(例如字符串不是有效的数字),会返回错误。

回到顶部