Go语言基础-常见编码(Json、Base64)
  P8BjD8Qkknzt 23小时前 11 0
Go

编码

json

  • json是go标准库里自带的序列化工具,使用了反射,效率比较低
  • easyjson值针对预先定义好的json结构体对输入的json字符串进行纯字符串的截取,并将对应的json字段赋值给结构体
  • easyjson -all xxx.go 生成go文件中定义的结构体对应的解析xxx.go所在的package不能是main
func easyjson.Marshal(v easyjson.Marshaler)([]byte, error)
func easyjson.Unmarshal(data []byte, v easyjson.Unmarshaler) error

  • sonic是字节跳动开源的json序列化工具包,号称性能强过easyjson、jsoniter,使用起来非常方便。
package main

import (
   "encoding/json"
   "fmt"

   "github.com/bytedance/sonic"
)

type Student struct {
   Name string
   Age  int
}

func main() {
   stu := Student{"zcy", 18}
   bs, _ := json.Marshal(stu)
   fmt.Println(string(bs))
   bs, _ = sonic.Marshal(stu)
   fmt.Println(string(bs))
}

base64

  • 任意byte数组都可以采用base64编码转为字符串,并且可以反解回byte数组
  • 编码和解码的方法是公开、确定的,base64不属于加密算法
  • base64经常在http环境下用来传输较长的信息
package main

import (
	"encoding/json"
	"fmt"

	"github.com/bytedance/sonic"
)

type Student struct {
	Name string
	Age  int
}

func main() {
	stu := Student{"zcy", 18}
	bs, _ := json.Marshal(stu)
	fmt.Println(string(bs))
	bs, _ = sonic.Marshal(stu)
	fmt.Println(string(bs))
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 23小时前 0

暂无评论

推荐阅读
  MQD0xJmbEOnQ   2024年08月12日   87   0   0 Go
  UuDQxJhIpKD4   25天前   43   0   0 Go
  pQocAAYIyhh3   4天前   19   0   0 Go
  yZdUbUDB8h5t   2024年08月07日   36   0   0 Go