如何在golang中构建动态结构?

我有这个 json 文件,在这个 json 文件中,我们看到 A1,B1 有 n 个键...................... ...................................zn, a1,a2... ..................................................... ....................一个,b1 .................... ......................................................bn 等。


     {

        "_id": "5746992a54c1ae24d53ce651",

        "A1": [

            {

                "a1": [

                    "abc",

                    "def",

                    "ghi"

                ]

            },

            {

                "a2": [

                    "abc",

                    "def",

                    "ghi"

                ]

            },

    .

    .

    ,

             {

                "an": [

                    "abc",

                    "def",

                    "ghi"

                ]

            }

        ],

        "B1": [

            {

                "b1": [

                    "abc",

                    "def",

                    "ghi"

                ]

            },

            {

                "b2": [

                    "abc",

                    "def",

                    "ghi"

                ]

            },

            {

                "bn": [

                    "abc",

                    "def",

                    "ghi"

                ]

            }

        ],

    .

    .

    .

    ,

        "Bn": [

            {

                "b1": [

                    "abc",

                    "def",

                    "ghi"

                ]

            },

            {

                "b2": [

                    "abc",

                    "def",

                    "ghi"

                ]

如何在 golang 中调用它们的结构


type Level1 struct {

    TAGID     bson.ObjectId       `json:"_id" bson:"_id"`

    LEVELTAG2 []Level2            `json:"level2" bson:"level2"`     

}


type LevelTag2 struct{

        LEVEL3 []string           `json:"level3" bson:"level3"`

}

我在golang中构建这个结构是正确的方式还是其他方式请帮助我


慕娘9325324
浏览 307回答 2
2回答

天涯尽头无女友

当编译时密钥未知时,您实际上只能使用map[string]interface{}然后一些辅助函数来导航该结构。如果键字面上是 a1、a2、a3 等......你可以制作一个实际的结构,但它不会很漂亮,因为你必须拼出每个键。通常,当文档的键是数据的一部分时,您无法真正创建静态结构。我所说的“部分数据”是指:{  "billy":23,  "tommy":24}对比[  {"name":"billy", "age":23},  {"name":"tommy", "age":24}]第二种形式可以表示为:struct { Name string, Age int }而第一个实际上只能是: map[string]int 或 map[string]interface{} (如果结构很深)

达令说

最好先定义所需的结构(将嵌套结构作为级别)。然后实现UnmarshalJSON([]byte) 错误接口将传入的数据转换为所需的结构。我不想写很长的例子,除非我确定你想要什么 =) 我想采用与在 Go 中合并动态数据结构中使用的方法类似的方法。你需要那些 "A1".."ZN", ("a1".."an")...("z1".."zn") 键吗?还是切片就足够了?喜欢:type S struct {    ID bson.ObjectId    Data [][][]string}或者可能是内部转换 []string[   "abc",   "def",   "ghi"]对于某些结构,如果只有 3 个元素?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go