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

cnblogs 2024-10-01 09:09:00 阅读 100

Go语言基础学习,常用编码Json和Base64

编码

json

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

<code>func easyjson.Marshal(v easyjson.Marshaler)([]byte, error)

func easyjson.Unmarshal(data []byte, v easyjson.Unmarshaler) error

    <li>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))

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。