簡體   English   中英

如何使用 JEN package 添加字段以構造 golang,其中字段取決於 JSON

[英]How to Add a field to struct golang using JEN package where fields depend on JSON

遍歷 Json 並獲取帶有標簽的“名稱”字段,然后將其添加到結構塊中。 代碼生成后需要output

var queryOutput [][]struct {
        product_name string `db:"product_name" json:"product_name"`
        category     string `db:"category" json:"category"`
        category2    string `db:"category2" json:"category2"`
    }
for _, yaxis := range YAxisColumn {
        columns := yaxis.(map[string]interface{})
        columnName := columns["name"].(string)
        c:= jen.Id(utils.GetFormattedName(columnName)).Int().Tag(map[string]string{
            "json": GetFormattedName(columnName),
            "db":   GetFormattedName(columnName),
        }),
    }

在其中添加 Yaxis 列字段的結構,即名稱

return jen.Func().Id(serviceName).Params().Parens(
        jen.List(jen.Interface(), jen.Error()),
    ).Block(
        jen.Var().Id("queryOutput").Op("[][]").Struct(
            jen.Id(utils.GetFormattedName(XAxisColumn)).String().Tag(map[string]string{
                "json": utils.GetFormattedName(XAxisColumn),
                "db":   utils.GetFormattedName(XAxisColumn),
            }),
),

JSON

"yAxisColumn" : [
                            {
                                "name": "category",
                                "color": ""
                            },
                            {
                                "name": "category2",
                                 "color":""
                            }
],

在 jen package 中使用名為 StructFunc 的 function。

Output 使用后

jen.Var().Id("queryOutput").Op("[]").StructFunc(
            func(g *jen.Group) {
                g.Add(jen.Id(utils.GetCamelCaseName(XAxisColumn)).String().Tag(map[string]string{
                    "json": utils.GetFormattedName(XAxisColumn),
                    "db":   utils.GetFormattedName(XAxisColumn),
                }))
                for _, yaxis := range YAxisColumn {
                    columns := yaxis.(map[string]interface{})
                    columnName := columns["name"].(string)
                    c := jen.Id(utils.GetCamelCaseName(columnName)).Int().Tag(map[string]string{
                        "json": utils.GetFormattedName(columnName),
                        "db":   utils.GetFormattedName(columnName),
                    })
                    g.Add(c)
                }
            },
        ),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM