首页 > 解决方案 > 如何在go中使用空结构值制作地图

问题描述

如何制作这种结构的地图:


{
    "A": [
        {
            "name": "My name",
            "desc": "aaaa",
            "sub": [] //empty
        },
        {
            "name": "Loc",
            "desc": "bbbb"
            "sub": [
              {
                  "name": "xxxxx",
                  "desc": "aaaa",
              },
              {
                  "name": "yyyyy",
                  "desc": "aaaa",
              },
            ] 
        },
    ],
    "B": [
        {
            "name": "My name b",
            "desc": "cccc",
            "sub": [] //empty
        },
        {
            "name": "tyty",
            "desc": "ffff"
            "sub": [
                {
                    "name": "rrrrrr",
                    "desc": "descrition",
                }
            ] 
        },
    ]
}

我试图这样做,但我没有得到它。如何制作空结构/数组以及如何在结构中制作结构?

    键入 myStruct 结构 {
        名称字符串`json:"name"`
        描述字符串`json:"desc"`
        // ?? 子 myStruct `json:"sub"`
    }

    m := 地图[字符串]接口{}{
        “A”:[]myStruct{
            {“我的名字”,“aaaa”,[]???},
            {“Loc”,“bbbb”,???},
        },
    }

标签: dictionarygostruct

解决方案


您的原始 JSON 中有一些拼写错误,但使用JSON-to-Go等在线服务会产生以下结构定义:

type AutoGenerated struct {
    A []struct {
        Name string        `json:"name"`
        Desc string        `json:"desc"`
        Sub  []interface{} `json:"sub"`
    } `json:"A"`
    B []struct {
        Name string        `json:"name"`
        Desc string        `json:"desc"`
        Sub  []interface{} `json:"sub"`
    } `json:"B"`
}

仅供参考,下面是我使用的 JSON 的清理/语法更正版本:

{
    "A": [
        {
            "name": "My name",
            "desc": "aaaa",
            "sub": []
        },
        {
            "name": "Loc",
            "desc": "bbbb",
            "sub": [
              {
                  "name": "xxxxx",
                  "desc": "aaaa"
              },
              {
                  "name": "yyyyy",
                  "desc": "aaaa"
              }
            ]
        }
    ],
    "B": [
        {
            "name": "My name b",
            "desc": "cccc",
            "sub": []
        },
        {
            "name": "tyty",
            "desc": "ffff",
            "sub": [
                {
                    "name": "rrrrrr",
                    "desc": "descrition"
                }
            ] 
        }
    ]
}

推荐阅读