Go语言基础-常见编码(Json、Base64)

打印 上一主题 下一主题

主题 836|帖子 836|积分 2508

编码

json


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

  • sonic是字节跳动开源的json序列化工具包,号称性能强过easyjson、jsoniter,使用起来非常方便。
  1. package main
  2. import (
  3.    "encoding/json"
  4.    "fmt"
  5.    "github.com/bytedance/sonic"
  6. )
  7. type Student struct {
  8.    Name string
  9.    Age  int
  10. }
  11. func main() {
  12.    stu := Student{"zcy", 18}
  13.    bs, _ := json.Marshal(stu)
  14.    fmt.Println(string(bs))
  15.    bs, _ = sonic.Marshal(stu)
  16.    fmt.Println(string(bs))
  17. }
复制代码
base64


  • 恣意byte数组都可以采用base64编码转为字符串,并且可以反解回byte数组
  • 编码和解码的方法是公开、确定的,base64不属于加密算法
  • base64经常在http环境下用来传输较长的信息
  1. package main
  2. import (
  3.         "encoding/json"
  4.         "fmt"
  5.         "github.com/bytedance/sonic"
  6. )
  7. type Student struct {
  8.         Name string
  9.         Age  int
  10. }
  11. func main() {
  12.         stu := Student{"zcy", 18}
  13.         bs, _ := json.Marshal(stu)
  14.         fmt.Println(string(bs))
  15.         bs, _ = sonic.Marshal(stu)
  16.         fmt.Println(string(bs))
  17. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表