为了账号安全,请及时绑定邮箱和手机立即绑定

查找 JSON 文件的嵌套结构的值

查找 JSON 文件的嵌套结构的值

Go
宝慕林4294392 2022-06-27 15:46:13
我已经设法创建了解析 JSON 文件所需的结构,如下所示:我希望提取 Site Visited “protocol and site_domain” 的值,如下所示。“协议”:“ipv4”、“site_domain”:[“8.8.9.9”、“1.1.1.1”、“67.31.88.31:443”它深埋在结构中,但我不知道如何在通过我的脚本读取 JSON 文件后提取值。有谁知道我如何实现这一目标?我在想类似的东西fmt.Println(+report.SiteVisited.Protocol.Site_domain)但我没有运气{  "upload": 14234234,  "unit_num": 154353,  "processed": 1598558692,  "super_report": [    {      "info": {        "file": {          "file_type": "Binary",          "file_name": "url_list_new.zip",          "file_path": "/home/user5",          "size": 6654,          "hashes": [            {              "name": "md5",              "value": "fsfdsfwerfsdfsf4566f"            },            {              "name": "sha1",              "value": "8989424232gfsdfsfsdfsd"            },            {              "name": "sha256",              "value": "727206bf5c786a82ddf0bc146afff395ed2ec9sdf"            }          ]        },        "identification": {          "success": true,          "name": "ZIP",          "version": "Gen5",          "author": "EnigmaTesters"        }      },      "qualification": {        "final": false,        "qualification": 0,        "factor": 0,        "scan_results": [          {            "type": "internal",            "qualification": 0,            "factor": 0,            "name": "Azure Repo Sensor 6",            "version": "2.7.9.3"          }        ]      },      "behavior": [        {          "priority": 3,          "section": 14,          "description": "Crashes"        }      ]    },    {      "info": {        "file": {          "file_type": "PE",          "file_name": "house.txt",          "file_path": "/home/user5/",          "size": 8862,          "properties": {            "attributes": 0,            "modified_time": 1593481746,            "access_time": 0,            "creation_time": 0          },
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

这只是一个例子,你能举一个你想要的结果的例子吗?


package main


import (

    "encoding/json"

    "fmt"

)


type myStruct struct {

    Upload      int `json:"upload"`

    UnitNum     int `json:"unit_num"`

    Processed   int `json:"processed"`

    SuperReport []struct {

        Info struct {

            File struct {

                FileType string `json:"file_type"`

                FileName string `json:"file_name"`

                FilePath string `json:"file_path"`

                Size     int    `json:"size"`

                Hashes   []struct {

                    Name  string `json:"name"`

                    Value string `json:"value"`

                } `json:"hashes"`

            } `json:"file"`

            Identification struct {

                Success bool   `json:"success"`

                Name    string `json:"name"`

                Version string `json:"version"`

                Author  string `json:"author"`

            } `json:"identification"`

        } `json:"info,omitempty"`

        Qualification struct {

            Final         bool `json:"final"`

            Qualification int  `json:"qualification"`

            Factor        int  `json:"factor"`

            ScanResults   []struct {

                Type          string `json:"type"`

                Qualification int    `json:"qualification"`

                Factor        int    `json:"factor"`

                Name          string `json:"name"`

                Version       string `json:"version"`

            } `json:"scan_results"`

        } `json:"qualification"`

        Behavior []struct {

            Priority    int    `json:"priority"`

            Section     int    `json:"section"`

            Description string `json:"description"`

        } `json:"behavior"`

        Info2 struct {

            File struct {

                FileType   string `json:"file_type"`

                FileName   string `json:"file_name"`

                FilePath   string `json:"file_path"`

                Size       int    `json:"size"`

                Properties struct {

                    Attributes   int `json:"attributes"`

                    ModifiedTime int `json:"modified_time"`

                    AccessTime   int `json:"access_time"`

                    CreationTime int `json:"creation_time"`

                } `json:"properties"`

                Entropy float64 `json:"entropy"`

                Hashes  []struct {

                    Name  string `json:"name"`

                    Value string `json:"value"`

                } `json:"hashes"`

            } `json:"file"`

        } `json:"info2,omitempty"`

        SitesVisted []struct {

            Protocol   string   `json:"protocol"`

            SiteDomain []string `json:"site_domain"`

        } `json:"sites_visted,omitempty"`

    } `json:"super_report"`

}


func main() {

    a := `{"upload":14234234,"unit_num":154353,"processed":1598558692,"super_report":[{"info":{"file":{"file_type":"Binary","file_name":"url_list_new.zip","file_path":"/home/user5","size":6654,"hashes":[{"name":"md5","value":"fsfdsfwerfsdfsf4566f"},{"name":"sha1","value":"8989424232gfsdfsfsdfsd"},{"name":"sha256","value":"727206bf5c786a82ddf0bc146afff395ed2ec9sdf"}]},"identification":{"success":true,"name":"ZIP","version":"Gen5","author":"EnigmaTesters"}},"qualification":{"final":false,"qualification":0,"factor":0,"scan_results":[{"type":"internal","qualification":0,"factor":0,"name":"Azure Repo Sensor 6","version":"2.7.9.3"}]},"behavior":[{"priority":3,"section":14,"description":"Crashes"}]},{"info":{"file":{"file_type":"PE","file_name":"house.txt","file_path":"/home/user5/","size":8862,"properties":{"attributes":0,"modified_time":1593481746,"access_time":0,"creation_time":0},"entropy":7.8,"hashes":[{"name":"md5","value":"sdfsdfssdfsdfsfsfsdfsdvxcvxvcv"},{"name":"sha1","value":"xxxfsdfwr234234213sfsfsdfsfsd"},{"name":"sha256","value":"xzfrwerwerwerfdsa890876543234234ssdfxcvsdfsdf"}]}},"qualification":{"final":false,"qualification":0,"factor":0,"scan_results":[{"type":"internal","qualification":0,"factor":0,"name":"Azure Sentinel","version":"2.7.9.3"}]},"behavior":[{"priority":5,"protocol":12,"description":"Uses /tmp folder"},{"priority":5,"protocol":0,"description":"5 dirs"},{"priority":5,"protocol":0,"description":"Creates dir"},{"priority":5,"protocol":10,"description":"updates struct"},{"priority":5,"protocol":12,"description":"Locates home"},{"priority":4,"protocol":22,"description":"Created a text file."},{"priority":3,"protocol":0,"description":"Too many stars in text file "}],"sites_visted":[{"protocol":"https","site_domain":["bonn.sh","conn.sh","t00ls.ru","cdr.eu"]},{"protocol":"https","site_domain":["http://bin.com/jRersdf1u","htto://bin.com/pxcsdfssYZ"]},{"protocol":"ipv4","site_domain":["8.8.9.9","1.1.1.1","67.31.88.31:443"]}]}]}`


    var myStruct myStruct

    var address []string


    if err := json.Unmarshal([]byte(a), &myStruct); err != nil {

        panic(err)

    }

    for _, report := range myStruct.SuperReport {

        for _, k := range report.SitesVisted {

            fmt.Printf("%+v\n", k)

            address = append(address, k.SiteDomain...)

        }

    }

    fmt.Println(address)

}

输出:


{Protocol:https SiteDomain:[bonn.sh conn.sh t00ls.ru cdr.eu]}

{Protocol:https SiteDomain:[http://bin.com/jRersdf1u htto://bin.com/pxcsdfssYZ]}

{Protocol:ipv4 SiteDomain:[8.8.9.9 1.1.1.1 67.31.88.31:443]}

[bonn.sh conn.sh t00ls.ru cdr.eu http://bin.com/jRersdf1u htto://bin.com/pxcsdfssYZ 8.8.9.9 1.1.1.1 67.31.88.31:443]


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号