关于通过Struct解析嵌套JSON的问题

关于通过Struct解析嵌套JSON的问题,json,go,Json,Go,我有一个有趣的JSON文件,有点嵌套,我不能很好地说明如何正确解析它。有人能看一下下面的结构是否正确吗?我可以解析根级别的项目,但是我越想深入我就越迷路。请参阅下面我的代码: 我试图解析的JSON文件位于单独的文件中: { "pushed": 090909099, "job_id": 17422, "processed": 159898989, "unit_report": [ {

我有一个有趣的JSON文件,有点嵌套,我不能很好地说明如何正确解析它。有人能看一下下面的结构是否正确吗?我可以解析根级别的项目,但是我越想深入我就越迷路。请参阅下面我的代码:

我试图解析的JSON文件位于单独的文件中:

{
  "pushed": 090909099,
  "job_id": 17422,
  "processed": 159898989,
  "unit_report": [
    {
      "meta": {
        "file": {
          "file_type": "Binary",
          "file_name": "Bob.txt",
          "file_path": "/usr/local/Bob.txt",
          "size": 4563,
          "entropy": 3.877,
          "hashes": [
            {
              "name": "Uniq34",
              "value": "02904234234234234243"
            },
            {
              "name": "sha1",
              "value": "23423423423423423423423"
            },
            {
              "name": "sha256",
              "value": "523412423424234234234"
            }
          ]
        },
我的结构设置在下面的Go文件中:

package main

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

// Report struct
type Report struct {
    Pushed int `json:"pushed"`
    JobID    int `json:"job_id"`
    Processed int `json:"processed"`
    SetReport  []struct {
        Meta struct {
            File struct {
                FileType    string `json:"file_type"`
                FileName    string `json:"file_name"`
                FilePath    string `json:"file_path"`
                Size        int    `json:"size"`
                Entropy     int    `json:"entropy"`
            }
        }
    }
}

代码的问题是您希望
json
数据中的
unit\u report
Go
struct中的
SetReport
匹配

为此,您可以将
json:“unit\u report
设置为
SetReport
字段,或者将
SetReport
重命名为
UnitReport

要么:

Processed int`json:“已处理”`
SetReport[]结构{
...
}`json:'unit\u report`//在此处查看更改
或:

Processed int`json:“已处理”`
UnitReport[]结构{//请参见此处的更改
...
}

摆脱匿名结构将使这更容易推理。结构类型字段缺少json标记。只需使用