登录
首页 >  Golang >  Go问答

提取 JSON 段落中的两个整数

来源:stackoverflow

时间:2024-02-20 10:09:22 175浏览 收藏

大家好,我们又见面了啊~本文《提取 JSON 段落中的两个整数》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我正在 golang 中使用 virustotal http api 来获取 url 上的投票,无论是恶意的还是无害的。 我想使用结构获取它们,然后使用这些结构中的数据解组 url。但是当我尝试这样做时,出现此错误: 无法将“无害”(无类型字符串常量)转换为 int

我当前使用的代码是: 类型投票结构体{ 无害的整数 恶意整数 }

type attributes struct {
    votes []votes `json:"total_votes"`
}

type data struct {
    attributes []attributes `json:"attributes"`
}

type jsonstruct struct {
    data []data `json:"data"`
}

var printdata jsonstruct
fmt.println(resp)
json.unmarshal([]byte(body), &printdata)
fmt.println(printdata.data[0].attributes[0].votes["harmless"])

我想要获取的 json 部分是:

{
"data": {
    "attributes": {
        "last_modification_date": 1642534694,
        "last_http_response_cookies": {
            "1P_JAR": "2022-01-18-19",
            "NID": "511=drq8-0Gwl0gpw2D-iyZhxrizpE--UMOyc_bO381XXkxknypvl_IETvsxRw3p8kMlBtiYEuSbASKK1wHirmgxce79kgzGMg9MryT0PnHox6kWbmEQTe2vsv_HtVZDFDXiLt4HKpcyDczOT8c_OK8bPb_P-f8rbIXJu_xrA0Ce4lw",
            "SameSite": "none"
        },
        "times_submitted": 82289,
        "total_votes": {
            "harmless": 54,
            "malicious": 18
        },

正如你所看到的,我想获取total_votes小节的内容,它们是整数harmlessmalicious。简而言之,如何获取它们而不出现有关它们是非类型化字符串的错误?


正确答案


您需要定义与 json 结构匹配的有效数据结构。在 unmarshal 之后,您可以通过 res.data.attributes.totalvotes.harmless 访问投票字段。例如(https://go.dev/play/p/YCtV1u-KF7Y):

package main

import (
    "encoding/json"
    "fmt"
    "log"
)

type Result struct {
    Data struct {
        Attributes struct {
            LastHTTPResponseCookies struct {
                OnePJAR  string `json:"1P_JAR"`
                Nid      string `json:"NID"`
                SameSite string `json:"SameSite"`
            } `json:"last_http_response_cookies"`
            LastModificationDate float64 `json:"last_modification_date"`
            TimesSubmitted       float64 `json:"times_submitted"`
            TotalVotes           struct {
                Harmless  float64 `json:"harmless"`
                Malicious float64 `json:"malicious"`
            } `json:"total_votes"`
        } `json:"attributes"`
    } `json:"data"`
}

var input = `{
"data": {
    "attributes": {
        "last_modification_date": 1642534694,
        "last_http_response_cookies": {
            "1P_JAR": "2022-01-18-19",
            "NID": "pcyDczOT8c_OK8bPb_P-f8rbIXJu_xrA0Ce4lw",
            "SameSite": "none"
        },
        "times_submitted": 82289,
        "total_votes": {
            "harmless": 54,
            "malicious": 18
        }
    }
}
}
`

func main() {
    var res Result
    if err := json.Unmarshal([]byte(input), &res); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%+v", res.Data.Attributes.TotalVotes.Harmless)
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《提取 JSON 段落中的两个整数》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>