Go語言基礎-常見編碼(Json、Base64)

ffff5發表於2024-09-22

編碼

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

相關文章