婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > golang的序列化與反序列化的幾種方式

golang的序列化與反序列化的幾種方式

熱門標簽:谷歌美發店地圖標注 江蘇呼叫中心外呼系統有效果嗎 赤峰電銷 地圖區域圖標注后導出 貴州電話智能外呼系統 官渡電銷外呼管理系統怎么收費 杭州人工智能電銷機器人費用 利用地圖標注位置 400開頭電話怎樣申請

golang用來序列化的模塊有很多,我們來介紹3個。

json

首先登場的是json,這個幾乎毋庸置疑。

序列化

package main

import (
 "encoding/json"
 "fmt"
)

type Girl struct {
 Name string
 Age int
 Gender string
 Where string
 Is_married bool
}

func main() {
 g := Girl{"satori", 16, "f","東方地靈殿", false}

 //可以直接使用json.Marshal,但是打印出來不好看,這里加上縮進
 ret, err := json.MarshalIndent(g, "", " ")
 if err != nil {
 fmt.Println(err)
 } else {
 //得到的是字節數組,需要轉化成string
 fmt.Println(string(ret))
 /*
 {
  "Name": "satori",
  "Age": 16,
  "Gender": "f",
  "Where": "東方地靈殿",
  "Is_married": false
 }
 */
 }
}

當然golang的大小寫我們知道是具有含義的,如果改成小寫, 那么該字段是無法被序列化的。但是這樣序列化之后的字段,也是大寫,如果我們就想要小寫該怎么辦呢?

package main

import (
 "encoding/json"
 "fmt"
)

type Girl struct {
 //使用`json:"xxx"`相當于起了一個別名xxx,以后序列化出來的字段就叫這個名字,
 Name string `json:"name"`
 Age int `json:"age"`
 Gender string `json:"gender"`
 Where string `json:"where"`
 Is_married bool `json:"is_married"`
}

func main() {
 g := Girl{"satori", 16, "f","東方地靈殿", false}

 ret, err := json.MarshalIndent(g, "", " ")
 if err != nil {
 fmt.Println(err)
 } else {
 fmt.Println(string(ret))
 /*
 {
  "name": "satori",
  "age": 16,
  "gender": "f",
  "where": "東方地靈殿",
  "is_married": false
 }
 */
 }
}

反序列化

package main

import (
 "encoding/json"
 "fmt"
)

type Girl struct {
 Name string `json:"name"`
 Age int `json:"age"`
 Gender string `json:"gender"`
 Where string `json:"where"`
 Is_married bool `json:"is_married"`
}

func main() {
 g := Girl{"satori", 16, "f","東方地靈殿", false}

 ret, err := json.MarshalIndent(g, "", " ")
 if err != nil {
 fmt.Println(err)
 return
 }

 //創建一個變量
 g2 := Girl{}
 //傳入json字符串,和指針
 err = json.Unmarshal(ret, g2)
 if err != nil {
 fmt.Println(err)
 }
 fmt.Println(g2) //{satori 16 f 東方地靈殿 false}
 fmt.Println(g2.Name, g2.Age) // satori 16
}

gob

標準庫gob是golang提供的“私有”的編解碼方式,它的效率會比json,xml等更高,特別適合在Go語言程序間傳遞數據。

序列化

package main

import (
 "bytes"
 "encoding/gob"
 "fmt"
)

type Girl struct {
 Name    string
 Age    int  `json:"age"`
 Gender   string `json:"gender"`
 Where   string `json:"where"`
 Is_married bool  `json:"is_married"`
}

func main() {
 g := Girl{"satori", 16, "f", "東方地靈殿", false}

 //創建緩存
 buf := new(bytes.Buffer)
 //把指針丟進去
 enc := gob.NewEncoder(buf)

 //調用Encode進行序列化
 if err := enc.Encode(g); err != nil {
 fmt.Println(err)
 return
 } else {
 //序列化的內容會被放進buf里面
 fmt.Println(buf.String())
 /*
 G��Girl�� Name Age Gender Where 
 Is_married  !��satori f東方地靈殿
 */
 }
}

發現是亂碼,因為這類似python的pickle,是該語言獨有的。所以我們不認識沒關系,golang認識就行了

反序列化

package main

import (
 "bytes"
 "encoding/gob"
 "fmt"
)

type Girl struct {
 Name    string
 Age    int  `json:"age"`
 Gender   string `json:"gender"`
 Where   string `json:"where"`
 Is_married bool  `json:"is_married"`
}

func main() {
 g := Girl{"satori", 16, "f", "東方地靈殿", false}

 buf := new(bytes.Buffer)
 enc := gob.NewEncoder(buf)
 if err := enc.Encode(g);err != nil {
 fmt.Println(err)
 return
 }

 var g1 = Girl{}
 //bytes.NewBuffer和bytes.Buffer類似,只不過可以傳入一個初始的byte數組,返回一個指針
 dec := gob.NewDecoder(bytes.NewBuffer(buf.Bytes()))
 //調用Decode方法,傳入結構體對象指針,會自動將buf.Bytes()里面的內容轉換成結構體
 if err := dec.Decode(g1);err != nil {
 fmt.Println(err)
 return
 } else {
 fmt.Println(g1) // {satori 16 f 東方地靈殿 false}
 }
}

msgpack

MessagePack是一種高效的二進制序列化格式。它允許你在多種語言(如JSON)之間交換數據。但它更快更小。

安裝

go get -u github.com/vmihailenco/msgpack

序列化和反序列化

接口和json是一致的

package main

import (
 "fmt"
 "github.com/vmihailenco/msgpack"
)

type Girl struct {
 Name    string
 Age    int  `json:"age"`
 Gender   string `json:"gender"`
 Where   string `json:"where"`
 Is_married bool  `json:"is_married"`
}

func main() {
 g := Girl{"satori", 16, "f", "東方地靈殿", false}

 //這個沒有MarshalIndent
 if ret, err := msgpack.Marshal(g); err != nil {
 fmt.Println(err)
 return
 } else {
 fmt.Println(string(ret)) //��Name�satori�Age�    �Gender�f�Where�東方地靈殿�Is_married�
 var g1 = Girl{}
 if err := msgpack.Unmarshal(ret, g1);err!=nil {
  fmt.Println(err)
  return
 } else {
  fmt.Println(g1) // {satori 16 f 東方地靈殿 false}
 }
 }
}

到此這篇關于golang的序列化與反序列化的幾種方式的文章就介紹到這了,更多相關golang 序列化與反序列化內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang中的net/rpc包使用概述(小結)
  • go語言net包rpc遠程調用的使用示例
  • Golang Gob編碼(gob包的使用詳解)

標簽:鷹潭 宜春 黔西 松原 武漢 河池 泰安 保定

巨人網絡通訊聲明:本文標題《golang的序列化與反序列化的幾種方式》,本文關鍵詞  golang,的,序列化,與,反,幾種,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang的序列化與反序列化的幾種方式》相關的同類信息!
  • 本頁收集關于golang的序列化與反序列化的幾種方式的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美另类变人与禽xxxxx| 久久综合九色综合97婷婷| 欧美性大战久久久久久久蜜臀| 欧美一区二区三区四区五区| 国产精品女主播在线观看| 欧美aaaaaa午夜精品| 99re8在线精品视频免费播放| 欧美一区二区人人喊爽| 一区二区理论电影在线观看| 国产福利一区二区三区视频在线 | 91蜜桃在线免费视频| 欧美成人免费网站| 亚洲一区二区三区精品在线| 成人美女视频在线观看18| ww亚洲ww在线观看国产| 日本成人在线电影网| 欧美三级在线看| 亚洲一区二区三区中文字幕在线| 99久久国产综合精品女不卡| 国产乱人伦偷精品视频不卡| 国产综合久久久久久鬼色| 日韩欧美国产综合| 亚洲第一搞黄网站| 午夜精品久久久久久久99水蜜桃| 亚洲国产精品欧美一二99| 色88888久久久久久影院按摩| 国产精品欧美综合在线| 国产成人免费视频| 久久看人人爽人人| 国产宾馆实践打屁股91| 国产免费成人在线视频| 成人午夜av电影| 欧美激情中文字幕| 成人丝袜高跟foot| 亚洲欧美在线观看| 成人av电影在线播放| 亚洲欧美日韩久久| 99久久久精品| 亚洲精品日韩一| 欧美色图激情小说| 亚洲综合网站在线观看| 欧美伊人久久久久久久久影院| 亚洲精品国产成人久久av盗摄| 色综合天天狠狠| 亚洲综合激情另类小说区| 欧美日韩在线播| 日本视频一区二区三区| 久久精品视频网| 成人性视频网站| 一区二区三区在线免费| 91精品婷婷国产综合久久竹菊| 久久99国产精品麻豆| 国产精品麻豆99久久久久久| 欧美在线不卡一区| 免费高清不卡av| 国产精品久久一卡二卡| 色婷婷狠狠综合| 日韩福利电影在线| 久久久亚洲午夜电影| 一本一道波多野结衣一区二区| 三级影片在线观看欧美日韩一区二区 | 精品久久久久久无| av激情综合网| 日韩精品乱码免费| 国产精品美女一区二区在线观看| 日本久久电影网| 国内久久婷婷综合| 亚洲欧美综合在线精品| 欧美精品第1页| 不卡电影一区二区三区| 午夜av一区二区三区| 国产日韩欧美综合在线| 欧美日韩五月天| 成人黄色在线网站| 日本在线不卡视频| 欧美国产精品一区二区三区| 欧美日韩国产首页| av不卡在线观看| 精品一区二区三区免费视频| 亚洲黄一区二区三区| 久久久综合激的五月天| 欧美日韩一级视频| 成人一级黄色片| 国产一区二区三区黄视频| 午夜精品一区二区三区免费视频 | 韩国精品主播一区二区在线观看| 亚洲特级片在线| 久久综合色天天久久综合图片| 欧美三级日韩三级| 夫妻av一区二区| 国产乱码精品一区二区三区av| 亚洲一区二区四区蜜桃| 国产精品成人免费| 久久久久久久综合日本| 日韩丝袜美女视频| 欧美日韩久久一区二区| 亚洲狠狠爱一区二区三区| 色婷婷激情综合| 91麻豆高清视频| 色综合色综合色综合色综合色综合 | 91在线观看美女| 国产一级精品在线| 久久精品国内一区二区三区| 亚欧色一区w666天堂| 亚洲精品成人a在线观看| 国产女主播视频一区二区| 久久网这里都是精品| 精品久久一区二区三区| 精品国产sm最大网站免费看| 在线电影一区二区三区| 制服丝袜中文字幕一区| 欧美精品日韩一区| 欧美精选在线播放| 制服丝袜国产精品| 欧美大片在线观看一区二区| 日韩免费视频一区| 久久看人人爽人人| 日本一区二区视频在线| 国产精品久久久久久久久图文区 | 亚洲精品一卡二卡| 亚洲综合色视频| 3d动漫精品啪啪一区二区竹菊| 91精品国产综合久久久久久久久久 | 成人性生交大片免费看中文网站| 国产激情精品久久久第一区二区| 国产盗摄女厕一区二区三区| 国产酒店精品激情| 北条麻妃国产九九精品视频| 91美女在线看| 欧美日韩在线观看一区二区| 欧美一区二区三区啪啪| 精品不卡在线视频| 91丨九色丨国产丨porny| 在线免费精品视频| 激情综合五月天| 国产成人激情av| 91啪亚洲精品| 欧美人妖巨大在线| 久久免费美女视频| 亚洲精品成人精品456| 日韩精品国产欧美| 国产不卡在线一区| 色av成人天堂桃色av| 日韩午夜电影av| 亚洲国产精品二十页| 香港成人在线视频| 国产精品综合一区二区三区| 在线观看日韩电影| 国产老肥熟一区二区三区| 五月天激情综合| 成人免费视频一区二区| 欧美视频一二三区| 中文一区在线播放| 日韩高清不卡一区二区| thepron国产精品| 欧美va亚洲va在线观看蝴蝶网| 中文字幕制服丝袜成人av| 日韩精品一级中文字幕精品视频免费观看 | 日本一区二区三区在线不卡 | 国产精品亚洲成人| 欧美亚洲另类激情小说| 成人国产精品免费观看| 91精品在线观看入口| 亚洲欧美日韩国产另类专区| 国产一区在线看| 91麻豆精品国产91久久久久久久久| 国产欧美日韩卡一| 日本亚洲电影天堂| 日本高清不卡在线观看| 日本一区二区三区免费乱视频| 婷婷夜色潮精品综合在线| 99在线热播精品免费| 久久精品在这里| 精品在线一区二区三区| 欧美日韩高清影院| 欧美日韩国产在线观看| 亚洲人成网站影音先锋播放| 成人免费在线视频| 国产a久久麻豆| 久久只精品国产| 黄网站免费久久| 欧美电影免费观看高清完整版在 | 欧美xxxx老人做受| 日本成人在线电影网| 欧美精品久久久久久久多人混战 | 欧美一级欧美一级在线播放| 亚洲黄色性网站| 一区二区日韩av| 日韩中文字幕麻豆| 欧美日韩精品免费| 亚洲国产美国国产综合一区二区| 在线亚洲免费视频| 依依成人精品视频| 日本高清成人免费播放| 一区二区三区在线观看国产| 色婷婷av一区二区| 一区二区在线电影| 欧美视频自拍偷拍| 天天亚洲美女在线视频| 欧美日本韩国一区二区三区视频|