gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:32:07 24 4
gpt4 key购买 nike

我设法创建了解析 JSON 文件所需的结构,如下所示:
我希望提取 Site Visited “protocol and site_domain” 的值,如下所示。
“协议(protocol)”:“ipv4”,
“站点域”:[
"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
},
"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"
]
}
]
}
]
}
我的 Go 脚本如下:
package main

import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
)

type MainReport 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"`
FileSubtype string `json:"file_subtype"`
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:"info,omitempty"`
SitesVisted []struct {
Protocol string `json:"protocol"`
SiteDomain []string `json:"site_domain"`
} `json:"sites_visted,omitempty"`
} `json:"super_report"`
}

// main fuction is below
func main() {

jsonFile, err := os.Open("file.json")
if err != nil {
fmt.Println(err)
}

fmt.Println("Successfully Opened json file")
defer jsonFile.Close()

fmt.Println("Successfully Opened file.json")

byteEmpValue, _ := ioutil.ReadAll(jsonFile)

var report MainReport

json.Unmarshal(byteEmpValue, &report)

fmt.Println(+report.Processed)

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

最佳答案

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

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]

关于json - 查找 JSON 文件的嵌套结构的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63734595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com