用GO解组JSON失败,有什么提示吗?

用GO解组JSON失败,有什么提示吗?,json,go,Json,Go,请看一下下面的结构,并告诉我为什么我不能解开它 type Server struct { Etcd [] struct { CertCn string `json:"cert_cn"` } `json:"etcd"` } type CertExpiryReport struct { Data struct { Servers map[string]*Server } `json:"data"` Summary struct

请看一下下面的结构,并告诉我为什么我不能解开它

type Server struct {
    Etcd [] struct {
        CertCn string `json:"cert_cn"`
    } `json:"etcd"`
}

type CertExpiryReport struct {
    Data struct {
        Servers map[string]*Server
    } `json:"data"`
    Summary struct {
        Expired int `json:"expired"`
        Ok      int `json:"ok"`
        Total   int `json:"total"`
        Warning int `json:"warning"`
    } `json:"summary"`
}
以下是JSON内容

{
  "data": {
    "myserver1.mydomain1.org": {
      "etcd": [
        {
          "cert_cn": "CN:something"
        }
      ]
    }
    "myserver2.mydomain2.org": {
      "etcd": [
        {
          "cert_cn": "CN:something"
        }
      ]
    }
  }, 
  "summary": {
    "expired": 0, 
    "ok": 31, 
    "total": 31, 
    "warning": 0
  }
}
这是我的密码

func printStuff() {
    bytes, err := ioutil.ReadFile(jsonFile)
    if err != nil {
        log.Errorf("%s", err.Error())
        os.Exit(1)
    }

    var certExpiryReport CertExpiryReport
    err = json.Unmarshal(bytes, &certExpiryReport)
    if err != nil {
        log.Errorf("%s", err.Error())
        os.Exit(1)
    }

    log.Info(certExpiryReport)
}
输出如下。我没有得到任何错误

{{map[]} {0 31 31 0}}

为什么不能解析JSON?我的结构有问题吗?

结构(或JSON)有问题。CertExpiryReport结构在数据字段中具有额外的嵌套级别。试着替换

Data struct {
    Servers map[string]*Server
} `json:"data"`

另外,您的JSON给了我一个错误(您在第一个服务器描述之后忘记了逗号)。下面是对结构和JSON进行更改的工作测试:


另一种方法是将JSON“数据”字段“服务器”字段放入其中,并在其中存储数据内容。如果需要更多嵌套。

结构(或JSON)有问题。CertExpiryReport结构在数据字段中具有额外的嵌套级别。试着替换

Data struct {
    Servers map[string]*Server
} `json:"data"`

另外,您的JSON给了我一个错误(您在第一个服务器描述之后忘记了逗号)。下面是对结构和JSON进行更改的工作测试:

另一种方法是将JSON“数据”字段“服务器”字段放入其中,并在其中存储数据内容。如果你需要更多的筑巢