- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我设法创建了解析 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/
最近开始学习MongoDB。今天老师教了我们 mongoexport 命令。在练习时,我遇到了一个典型的问题,包括教练在内的其他同学都没有遇到过。我在我的 Windows 10 机器上使用 Mongo
我是 JSON Schema 的新手,读过什么是 JSON Schema 等等。但我不知道如何将 JSON Schema 链接到 JSON 以针对该 JSON Schema 进行验证。谁能解释一下?
在 xml 中,我可以在另一个 xml 文件中包含一个文件并使用它。如果您的软件从 xml 获取配置文件但没有任何方法来分离配置,如 apache/ngnix(nginx.conf - site-av
我有一个 JSON 对象,其中包含一个本身是 JSON 对象的字符串。我如何反序列化它? 我希望能够做类似的事情: #[derive(Deserialize)] struct B { c: S
考虑以下 JSON { "a": "{\"b\": 12, \"c\": \"test\"}" } 我想定义一个泛型读取 Reads[Outer[T]]对于这种序列化的 Json import
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 11 个月前关闭。 Improve
我的旧项目在 MySQL 中有 Standard JSON 格式的数据。 对于我在 JS (Node.js) 和 DynamoDB 中的全新项目,关于 Standard JSON格式: 是否建议将其转
JSON 值字符串、数字、true、false、null 是否是有效的 JSON? 即,是 true 一个有效的 JSON 文档?还是必须是数组/对象? 一些验证器接受这个(例如 http://jso
我有一个 JSON 字符串,其中一个字段是文本字段。这个文本字段可以包含用户在 UI 中输入的文本,如果他们输入的文本是 JSON 文本,也许是为了说明一些编码,我需要对他们的文本进行编码,以便它不会
我正在通过 IBM MQ 调用处理数据,当由 ColdFusion 10 (10,0,11,285437) 序列化时,0 将作为 +0.0 返回,它会导致无效的 JSON并且无法反序列化。 stPol
我正在从三个数组中生成一个散列,然后尝试构建一个 json。我通过 json object has array 成功了。 require 'json' A = [['A1', 'A2', 'A3'],
我从 API 接收 JSON,响应可以是 30 种类型之一。每种类型都有一组唯一的字段,但所有响应都有一个字段 type 说明它是哪种类型。 我的方法是使用serde .我为每种响应类型创建一个结构并
我正在下载一个 JSON 文件,我已将其检查为带有“https://jsonlint.com”的有效 JSON 到文档目录。然后我打开文件并再次检查,结果显示为无效的 JSON。这怎么可能????这是
我正在尝试根据从 API 接收到的数据动态创建一个 JSON 对象。 收到的示例数据:将数据解码到下面给出的 CiItems 结构中 { "class_name": "test", "
我想从字符串转换为对象。 来自 {"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \"value4\"\n }\n
目前我正在使用以下代码将嵌套的 json 转换为扁平化的 json: import ( "fmt" "github.com/nytlabs/gojsonexplode" ) func
我有一个使用来自第三方 API 的数据的应用程序。我需要将 json 解码为一个结构,这需要该结构具有“传入”json 字段的 json 标签。传出的 json 字段具有不同的命名约定,因此我需要不同
我想使用 JSON 架构来验证某些值。我有两个对象,称它们为 trackedItems 和 trackedItemGroups。 trackedItemGroups 是组名称和 trackedItem
考虑以下案例类模式, case class Y (a: String, b: String) case class X (dummy: String, b: Y) 字段b是可选的,我的一些数据集没有字
我正在存储 cat ~/path/to/file/blah | 的输出jq tojson 在一个变量中,稍后在带有 JSON 内容的 curl POST 中使用。它运作良好,但它删除了所有换行符。我知
我是一名优秀的程序员,十分优秀!