[英]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.