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

标签 json go

我有一个有趣的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"`
            }
        }
    }
}

最佳答案

代码的问题是,您希望unit_report数据中的jsonSetReport结构中的Go匹配。
为此,您可以将json:"unit_report设置为SetReport字段,或者将SetReport重命名为UnitReport
要么:

Processed int `json:"processed"`
SetReport  []struct {

...

} `json:"unit_report`  // See the changes here
要么:
Processed int `json:"processed"`
UnitReport  []struct { // See the changes here
    ...
}

关于json - 关于通过Struct解析嵌套JSON的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63725709/

相关文章:

ios - 如何为我的登录设置 API 请求?

json - 如何为 GeoShape Circle 创建 JSON-LD 架构?

ruby-on-rails - Rails 4 - 以一种单一形式在 JSON 对象中保存多个值和/或

ios - 从初始化程序返回之前,并非在所有路径上都调用'self.init'

http - 如何在 GO 中执行 HEAD 请求?

c++ - golang Alpine docker交叉编译C++

go - Go的http服务器可以编译 typescript 吗?

go - 如何从结构名称的字符串表示中实例化结构

go make slice 比 []{1,1,1,1} 慢一点

javascript - Three.js 导入的 JSON 模型不接收/转换阴影