将单项JSON列表解组为单个嵌套结构

时间:2019-03-12 20:47:55

标签: json go

我有一个来自图形数据库的JSON,它仅返回列表。这是查询和响应的示例:

{
  Course(func: eq(XID, "1")) {
    Name
      Holes : Hole {
        Number
        Tee {
          Color
          Basket @facets(distance) {
            Designation 
          }
        }
    }
  }
}

此查询按ID查找,因此它只能返回一个结果,但是数据库后端的性质意味着它将始终返回如下列表:

{
  "Course": [
    {
      "Name": "NAD",
      "Holes": [
        {
          "Number": 1,
          "Tee": [
            {
              "Color": "Blue",
              "Basket": [
                {
                  "Designation": "A",
                  "Basket|distance": "70"
                }
              ]
            },
            {
              "Color": "Red",
              "Basket": [
                {
                  "Designation": "A",
                  "Basket|distance": "69"
                }
              ]
            }
          ]
        },
        {
          "Number": 2,
          "Tee": [
            {
              "Color": "Blue",
              "Basket": [
                {
                  "Designation": "A",
                  "Basket|distance": "79"
                },
                {
                  "Designation": "B",
                  "Basket|distance": "89"
                }
              ]
            },
            {
              "Color": "Red",
              "Basket": [
                {
                  "Designation": "A",
                  "Basket|distance": "79"
                },
                {
                  "Designation": "B",
                  "Basket|distance": "95"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

我想将单个课程解组为结构:

type Course struct {
    Name  string `json:"Name"`
    Holes []struct {
        Number int `json:"Number"`
        Tee    []struct {
            Color  string `json:"Color"`
            Basket []struct {
                Designation    string `json:"Designation"`
                BasketDistance string `json:"Basket|distance"`
            } `json:"Basket"`
        } `json:"Tee"`
    } `json:"Holes"`
}

我尝试制作一个临时结构,该结构只是一门课程的列表,以按索引提取正确的JSON,但是我遇到了一个非常普遍的运行时错误,即无法将对象解编为该类型。

我认为通过指定JSONRawMessage类型将其转换为[]map[string]interface{}然后从那里解组为Course相对容易,但这不会带来性能损失吗?解决此问题的最有效方法是什么?

0 个答案:

没有答案
相关问题