gin中綁定表單數據至自定義結構體


package main

import "github.com/gin-gonic/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 {
	// 嵌套匿名結構體
	NestedAnonymousStruct struct{
		FieldX string `form:"field_x"`
	}
	FieldD string `form:"field_d"`
}

func GetB(c *gin.Context) {
	// 綁定表單數據至自定義結構體
	var b StructB
	c.Bind(&b)
	c.JSON(200, gin.H{"field_a": b.NestedStruct, "field_b": b.FieldB})
}
func GetC(c *gin.Context) {
	var cc StructC
	c.Bind(&cc)
	c.JSON(200, map[string]interface{}{"field_a": cc.NestedStructPointer, "field_c": cc.FieldC})
}
func GetD(c *gin.Context) {
	var d StructD
	c.Bind(&d)
	c.JSON(200, gin.H{"field_x": d.NestedAnonymousStruct, "field_d": d.FieldD})
}

func main() {
	r := gin.Default()
	r.GET("/getb", GetB)
	r.GET("/getc", GetC)
	r.GET("/getd", GetD)
	r.Run()
}

  

請求方法:

http://127.0.0.1:3000/getd?field_a=aaa&field_b=bbbb

http://127.0.0.1:3000/getd?field_a=aaa&field_c=ccccc

http://127.0.0.1:3000/getd?field_d=ddddd&field_x=xxxxxxxx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM