gpt4 book ai didi

json - 使用golang的encoding/json读取嵌套的json数据

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:06 26 4
gpt4 key购买 nike

我无法为我的结构获取正确的定义来捕获保存在变量中的嵌套 json 数据。我的代码片段如下:

package main

import "fmt"
import "encoding/json"

type Data struct {
P string `json:"ports"`
Ports struct {
Portnums []int
}
Protocols []string `json:"protocols"`
}

func main() {
y := `{
"ports": {
"udp": [
1,
30
],
"tcp": [
100,
1023
]
},
"protocols": [
"tcp",
"udp"
]
}`
var data Data
e := json.Unmarshal([]byte(y), &data)
if e == nil {
fmt.Println(data)
} else {
fmt.Println("Failed:", e)
}

}

$ go run foo.go
Failed: json: cannot unmarshal object into Go value of type string

最佳答案

这对我有用(请参阅上面对您的问题的评论) GoPlay

type Data struct {
Ports struct {
Tcp []float64 `json:"tcp"`
Udp []float64 `json:"udp"`
} `json:"ports"`
Protocols []string `json:"protocols"`
}

func main() {
y := `{
"ports": {
"udp": [
1,
30
],
"tcp": [
100,
1023
]
},
"protocols": [
"tcp",
"udp"
]
}`
d := Data{}
err := json.Unmarshal([]byte(y), &d)
if err != nil {
fmt.Println("Error:", err.Error())
} else {
fmt.Printf("%#+v", d)
}

}

输出

main.Data{
Ports:struct {
Tcp []float64 "json:\"tcp\"";
Udp []float64 "json:\"udp\""
}{
Tcp:[]float64{100, 1023},
Udp:[]float64{1, 30}
},
Protocols:[]string{"tcp", "udp"}
}

关于json - 使用golang的encoding/json读取嵌套的json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041789/

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