1. 程式人生 > 程式設計 >gin使用自定義結構繫結表單資料的示例程式碼

gin使用自定義結構繫結表單資料的示例程式碼

以下示例使用自定義結構

type StructA struct {
  FieldA string `form:"field_a"`
}
 
type StructB struct {
  NestedStruct StructA
  FieldB string `form:"field_b"`
}
 
type StructC struct {
  NestedStructPointer *StructA
  FieldC string `form:"field_c"`
}
 
type StructD struct {
  NestedAnonyStruct struct {
    FieldX string `form:"field_x"`
  }
  FieldD string `form:"field_d"`
}
 
func GetDataB(c *gin.Context) {
  var b StructB
  c.Bind(&b)
  c.JSON(200,gin.H{
    "a": b.NestedStruct,"b": b.FieldB,})
}
 
func GetDataC(c *gin.Context) {
  var b StructC
  c.Bind(&b)
  c.JSON(200,gin.H{
    "a": b.NestedStructPointer,"c": b.FieldC,})
}
 
func GetDataD(c *gin.Context) {
  var b StructD
  c.Bind(&b)
  c.JSON(200,gin.H{
    "x": b.NestedAnonyStruct,"d": b.FieldD,})
}
 
func main() {
  r := gin.Default()
  r.GET("/getb",GetDataB)
  r.GET("/getc",GetDataC)
  r.GET("/getd",GetDataD)
 
  r.Run()
}

執行示例:

$ curl "http://localhost:8080/getb?field_a=hello&field_b=world"
{"a":{"FieldA":"hello"},"b":"world"}
$ curl "http://localhost:8080/getc?field_a=hello&field_c=world"
{"a":{"FieldA":"hello"},"c":"world"}
$ curl "http://localhost:8080/getd?field_x=hello&field_d=world"
{"d":"world","x":{"FieldX":"hello"}}

注意:不支援以下樣式結構

type StructX struct {
  X struct {} `form:"name_x"` // HERE have form
}
 
type StructY struct {
  Y StructX `form:"name_y"` // HERE have form
}
 
type StructZ struct {
  Z *StructZ `form:"name_z"` // HERE have form
}

總之,現在只支援現在沒有form標籤的自定義結構

到此這篇關於gin使用自定義結構繫結表單資料的示例程式碼的文章就介紹到這了,更多相關gin繫結表單資料內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!