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

标签 json encoding go

我无法为我的结构获取正确的定义来捕获保存在变量中的嵌套 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/

相关文章:

java - hippo cms 上的 Html 表单编码不适用于 utf-8

go - 以时间表示的字符串时间。时间

go - 负载测试 dropwizard 端点

json - 使用 ngFor-Loop (Angular) 显示 JSON

javascript - 在 $.getJSON 函数中测试 bool 变量时出现奇怪的结果

git - 将源代码文件的 Git 存储库从 ISO-8859-1 编码切换为 UTF-8 编码

Go using mux Router - 如何将我的数据库传递给我的处理程序

c# - Newtonsoft JSON.NET 和 json 键错误中的空格?

jquery - 从 C# 通用列表解析 json 响应

c++ win32api值编码在返回时损坏