万万哇 发表于 2024-9-22 13:50:08

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

编码

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
   Ageint
}

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
        Ageint
}

func main() {
        stu := Student{"zcy", 18}
        bs, _ := json.Marshal(stu)
        fmt.Println(string(bs))
        bs, _ = sonic.Marshal(stu)
        fmt.Println(string(bs))
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Go语言基础-常见编码(Json、Base64)