Go之URL Query String 编码器和解码器
2020-02-16 21:59
671 查看
项目地址
https://github.com/hetiansu5/urlquery
简介
使用Go语言实现的URL Query字符串编码器和解码器。写好后才发现官方已有实现的querystring,但只实现了编码器,没有解码器,且只支持顶层数据结构为结构体,实现上不算特别完善。
特性
- 支持丰富的Go数据结构互转: 基础数据类型: 有符号整型[8,16,32,64] 无符号整形[8,16,32,64] 字符串 布尔值 浮点型[32,64] 字节 字面量
- 复合数据类型: 数组 切片 哈希 结构体
- 嵌套结构体
query:"name")
快速入门
更多查看example
package main import ( "github.com/hetiansu5/urlquery" "fmt" ) type SimpleChild struct { Status bool `query:"status"` Name string } type SimpleData struct { Id int Name string `query:"name"` Child SimpleChild Params map[string]int8 `query:"p"` Array [3]uint16 } func main() { data := SimpleData{ Id: 2, Name: "http://localhost/test.php?id=2", Child: SimpleChild{ Status: true, }, Params: map[string]int8{ "one": 1, }, Array: [3]uint16{2, 3, 300}, } //Marshal: from go structure to url query string bytes, _ := urlquery.Marshal(data) fmt.Println(string(bytes)) //Unmarshal: from url query string to go structure v := &SimpleData{} urlquery.Unmarshal(bytes, v) fmt.Println(*v)
注意事项
- 针对Map数据类型,Marshal可以支持map[基础数据类型]基础数据类型|复合数据类型,Unmarshal只能支持map[基础数据类型]基础数据类型
- 结构体零值忽略编码默认开启,可以通过Option关闭此功能
- 字节实际上是uint8,字面量是int32,所以编码后其实是整型,解码的时候也需要接收的是整型
- 点赞
- 收藏
- 分享
- 文章举报
![](https://g.csdnimg.cn/static/user-reg-year/1x/2.png)
相关文章推荐
- HashMap相同key累加value的问题
- Servlet&HTTP&Request
- 建造者模式(Builder Pattern)——C#设计模式五
- APUE
- Guideline 2.5.4 - Performance - Software Requirements
- jbuilder2005 to jbuilder2006
- JBuilder连接SQL 数据库方法
- requestAnimationFrame
- 报错:Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- ESP32 Arduino环境搭建
- C# 中 StringBuilder和String的区别
- WP Survey And Quiz Tool
- arduino四轮小车程序前篇
- arduino四轮小车程序后篇
- ajax跨域问题 No 'Access-Control-Allow-Origin' header is present on the requested resource.
- InvokeRequired
- @RequestBody的使用及二维码的生成
- 求会做UI设计的,我想做个精灵表加载到游戏
- UE4中如何使物体始终朝向摄像头?
- UE4笔记:利用Widget设计一个切换材质功能