Go之URL Query String 编码器和解码器

项目地址

https://github.com/hetiansu5/urlquery

简介

使用Go语言实现的URL Query字符串编码器和解码器。写好后才发现官方已有实现的querystring,但只实现了编码器,没有解码器,且只支持顶层数据结构为结构体,实现上不算特别完善。

特性

  • 支持丰富的Go数据结构互转:
    • 基础数据类型: 有符号整型[8,16,32,64] 无符号整形[8,16,32,64] 字符串 布尔值 浮点型[32,64] 字节 字面量
    • 复合数据类型: 数组 切片 哈希 结构体
    • 嵌套结构体
  • 支持顶层的数据结构为数组 切片 哈希,不仅仅是结构体
  • 支持自定义的URL-Encode编码规则,支持全局、局部设置方式,支持默认规则
  • 支持自定义的键名映射规则(结构体Tag示例: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,所以编码后其实是整型,解码的时候也需要接收的是整型
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,494评论 1 10
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,076评论 2 9
  • 前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站...
    小陈阿飞阅读 4,256评论 0 1
  • 你是娃娃 我是妈妈 你露齿笑着 以小步快跑的节奏 张开短俏的双臂 踉踉跄跄 向我跑来 我压抑住内心的慌张 稳稳地蹲...
    薛若钦阅读 1,247评论 0 3
  • (一) 花褪残红春已暮, 绿意渐深叶满铺。 年复一年人渐渺, 潮来潮去月还孤。 (二) 雨疏风骤老树醒, 电闪雷鸣...
    随心而动自由呼吸阅读 3,375评论 2 9

友情链接更多精彩内容