gin使用自定义结构绑定表单数据

以下示例使用自定义结构

type StructA struct {FieldA string `form:"field_a"`
}type StructB struct {NestedStruct StructAFieldB string `form:"field_b"`
}type StructC struct {NestedStructPointer *StructAFieldC 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 StructBc.Bind(&b)c.JSON(200, gin.H{"a": b.NestedStruct,"b": b.FieldB,})
}func GetDataC(c *gin.Context) {var b StructCc.Bind(&b)c.JSON(200, gin.H{"a": b.NestedStructPointer,"c": b.FieldC,})
}func GetDataD(c *gin.Context) {var b StructDc.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使用自定义结构绑定表单数据相关推荐

  1. @InitBinder注解绑定表单数据

    在SpringMVC框架的项目中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定.      比如经常会遇到页面表单中某些数据类型是Date.In ...

  2. Gin 框架学习笔记(01)— 自定义结构体绑定表单、绑定URI、自定义log、自定义中间件、路由组、解析查询字符串、上传文件、使用HTTP方法

    要实现一个 API 服务器,首先要考虑两个方面:API 风格和媒体类型.Go 语言中常用的 API 风格是 RPC 和 REST,常用的媒体类型是 JSON.XML 和 Protobuf.在 Go A ...

  3. vue+ele 实现v-for动态数据循环表单,然后对每个结构进行表单校验的方法

    vue+ele 实现v-for动态数据循环表单,然后对每个结构进行表单校验的方法 项目开发时遇到form结构是动态遍历出来的,但是每个遍历出来的表单都需要做相对应的检验处理,ele提供的办法只能对单个 ...

  4. ElementUI dialog弹框 退出时重置表单数据

    需求 进行项目开发,用到了ElementUI的dialog弹出框,当再次点击弹出框时发现,原本数据的还存在 解决 查阅了ElementUI的文档,发现一个好东西 就是这个方法,解决了问题,分享一下用法 ...

  5. Spring MVC中基于自定义Editor的表单数据处理技巧

    本文出处:http://blog.csdn.net/chaijunkun/article/details/8642642,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  6. jQuery 序列化表单数据 serialize() serializeArray()

    1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用 ...

  7. Servlet 表单数据

    很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. GET 方法 GET 方法向页 ...

  8. elementUI清空弹框中的表单数据

    点击此处直达应用场景示例 官网:https://element.eleme.cn/#/zh-CN/component/form 补充:改变表头颜色: <el-table :data=" ...

  9. MVC教程第四篇:传递表单数据

    MVC教程第四篇:传递表单数据     摘要 本文将完成我们"MVC公告发布系统"的公告发布功能,以此展示在ASP.NET MVC中如何传递处理表单的数据. 前言 通过前几篇文章, ...

最新文章

  1. trie树上值域化建主席树 查询异或平移最小值 ---- P3293 [SCOI2016]美味
  2. 使用EXE4J将JAR包转换为EXE文件
  3. Exchange2007中创建收件人对象、通讯组和地址列表和客户端访问
  4. 自制操作系统(十) 图像叠加处理
  5. 映射文件_Hibernate 映射文件
  6. oracle rownum 特别慢,select * from table where rownum=1怎么会特别慢??表的数据在千万左右...
  7. js调用本地js文件(亲测)
  8. 怎么取消百度右侧栏的搜索热点
  9. 快速突破面试算法之搜索算法篇
  10. 微分方程数值计算matlab实现,微分方程数值解及Matlab实现
  11. Spark的宽窄依赖
  12. android TVBOX OTT IPTV
  13. 使用Matlab/Simulink进行电力电子控制设计
  14. 《第31天:JQuery - 轮播图》
  15. 第28届深圳国际礼品展圆满闭幕,五洲御瓷再续“新里程”
  16. 【转载】使用JQDATA获取数据并本地化(Mysql储存)
  17. java.nio包网络编程_Java NIO网络编程
  18. 大学生服务外包大赛之超新星教考分离系统学习路线以及参考资源
  19. 无线蓝牙耳机排行榜是什么?TWS真无线蓝牙耳机排行
  20. 新版iTunes Connect中重新上传app

热门文章

  1. 【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )
  2. 【UML 建模】UML建模语言入门-视图,事物,关系,通用机制
  3. WebUploader 上传图片回显
  4. Revit二次开发--Hello World
  5. 《HTTP权威指南》– 5.Web服务器
  6. Android LayoutInflater详解(转)
  7. javascript之值传递与引用传递
  8. SQL语句判断数据库、表、字段是否存在
  9. ETL工具调度之中美PK
  10. sort用法(默认按升序排列)