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

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

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

熱門標簽:谷歌美發(fā)店地圖標注 江蘇呼叫中心外呼系統有效果嗎 赤峰電銷 地圖區(qū)域圖標注后導出 貴州電話智能外呼系統 官渡電銷外呼管理系統怎么收費 杭州人工智能電銷機器人費用 利用地圖標注位置 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 {
 //得到的是字節(jié)數組,需要轉化成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
 }

 //創(chuàng)建一個變量
 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}

 //創(chuàng)建緩存
 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東方地靈殿
 */
 }
}

發(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 序列化與反序列化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

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

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

巨人網絡通訊聲明:本文標題《golang的序列化與反序列化的幾種方式》,本文關鍵詞  golang,的,序列化,與,反,幾種,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang的序列化與反序列化的幾種方式》相關的同類信息!
  • 本頁收集關于golang的序列化與反序列化的幾種方式的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲h动漫在线| 日韩三级在线观看| 成人短视频下载| 91丝袜国产在线播放| 久久99精品国产.久久久久久| 91福利社在线观看| 久久久久久免费毛片精品| 亚洲激情五月婷婷| 国产激情一区二区三区四区 | 国产精品成人在线观看 | 亚洲特级片在线| 日本va欧美va精品发布| 日本韩国欧美在线| 中文字幕日韩av资源站| 欧美专区亚洲专区| 亚洲精品日日夜夜| www..com久久爱| 国产亚洲精品超碰| 精品伊人久久久久7777人| 欧美激情在线免费观看| 国产成人免费视频| 欧美激情中文字幕| 成人免费视频播放| 国产精品入口麻豆九色| 成人美女在线观看| 国产亚洲综合av| 成年人午夜久久久| 亚洲色图都市小说| 99精品一区二区三区| 综合欧美亚洲日本| 国产一区激情在线| 久久久青草青青国产亚洲免观| 日本美女一区二区| 精品国产乱码久久久久久图片| 美女www一区二区| 欧美本精品男人aⅴ天堂| 99久久99久久综合| 亚洲高清在线精品| 91精品麻豆日日躁夜夜躁| 首页国产丝袜综合| 91精品国产一区二区| 一区二区三区中文在线观看| 日韩欧美激情四射| 国产福利精品导航| 日韩一区在线免费观看| 欧美在线观看一区| 蜜桃av一区二区在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 国产日韩欧美一区二区三区综合| 奇米一区二区三区| 久久99国产乱子伦精品免费| 久久久不卡网国产精品一区| 欧美日本视频在线| 99九九99九九九视频精品| 国产乱理伦片在线观看夜一区| 午夜久久福利影院| 亚洲欧美国产毛片在线| 亚洲国产精品t66y| 欧美精品一区二区三区一线天视频| 色94色欧美sute亚洲线路一ni | 亚洲午夜三级在线| 欧美激情一区二区三区不卡| 日韩视频在线你懂得| 在线观看网站黄不卡| 国产suv精品一区二区三区| 久久99在线观看| 蜜臀av性久久久久av蜜臀妖精 | 国产一区二区在线观看免费| 久久疯狂做爰流白浆xx| 久久成人18免费观看| 久久99国产精品免费| 美女脱光内衣内裤视频久久网站| 天天操天天色综合| 日韩av成人高清| 久久精品国产99国产| 久久99精品一区二区三区三区| 狠狠色伊人亚洲综合成人| 国产在线不卡视频| 北岛玲一区二区三区四区| 色综合久久99| 欧美男同性恋视频网站| 欧美一级二级在线观看| 久久免费看少妇高潮| 中文字幕电影一区| 日韩美女久久久| 香港成人在线视频| 久久成人免费电影| 成人午夜激情在线| 91国产福利在线| 日韩一区二区在线观看| 久久久久高清精品| 亚洲人成网站色在线观看| 香蕉乱码成人久久天堂爱免费| 激情另类小说区图片区视频区| 国产成人精品一区二区三区四区| 99精品在线观看视频| 91麻豆精品国产无毒不卡在线观看| 26uuu亚洲综合色欧美| 中文字幕一区视频| 亚洲主播在线播放| 激情深爱一区二区| 不卡av电影在线播放| 欧美探花视频资源| 欧美v亚洲v综合ⅴ国产v| 日韩毛片视频在线看| 免费成人在线播放| 一本大道久久精品懂色aⅴ | 欧美久久久久久久久| 欧美mv和日韩mv的网站| 国产精品免费aⅴ片在线观看| 亚洲成人一区在线| 成人午夜激情片| 亚洲精品一线二线三线| 亚洲国产日日夜夜| 97精品久久久久中文字幕 | 中文字幕第一区| 日韩国产精品91| 成人激情综合网站| 日韩午夜激情av| 亚洲国产一区二区在线播放| 毛片av一区二区三区| 99re在线精品| 久久午夜羞羞影院免费观看| 日韩国产欧美在线播放| 色综合色狠狠天天综合色| 精品久久人人做人人爰| 亚洲国产一区视频| 不卡在线观看av| 国产亚洲成aⅴ人片在线观看 | 亚洲欧美国产毛片在线| 国产很黄免费观看久久| 欧美xxxxxxxx| 久久99久久99精品免视看婷婷| 91 com成人网| 五月天丁香久久| 欧美视频第二页| 亚洲精品久久久久久国产精华液| 成人久久18免费网站麻豆| 国产天堂亚洲国产碰碰| 国产精品456| 欧美激情一区二区三区四区| 狠狠色丁香婷婷综合| 日韩欧美国产综合一区| 奇米一区二区三区av| 日韩三级精品电影久久久| 日韩主播视频在线| 欧美日韩国产在线播放网站| 五月激情六月综合| 91精品国产色综合久久不卡蜜臀| 日韩中文字幕区一区有砖一区| 4438x成人网最大色成网站| 蜜臀av性久久久久av蜜臀妖精| 精品国产免费久久 | 欧美精品久久99久久在免费线| 亚洲欧美日韩国产另类专区| 91色乱码一区二区三区| 一级做a爱片久久| 91精品国产高清一区二区三区蜜臀| 久久精品二区亚洲w码| 久久免费看少妇高潮| 色噜噜久久综合| 麻豆精品视频在线| 国产亚洲女人久久久久毛片| 粉嫩嫩av羞羞动漫久久久| 亚洲精品中文在线影院| 91精品国产品国语在线不卡| 国产精品一区一区| 亚洲精品久久久久久国产精华液| 欧美精选午夜久久久乱码6080| 黑人巨大精品欧美黑白配亚洲| 国产精品久久久久久久久搜平片 | 国产成人精品免费| 亚洲欧美色综合| 日韩欧美另类在线| voyeur盗摄精品| 久久国产婷婷国产香蕉| 国产精品毛片久久久久久久 | 欧美中文字幕一区| 免费在线视频一区| 亚洲色图在线看| 日韩欧美国产一区在线观看| 成人a级免费电影| 亚洲成精国产精品女| 欧美国产乱子伦| 91精品国产欧美日韩| 成人性生交大片| 美腿丝袜亚洲色图| 亚洲最大成人网4388xx| 精品成人在线观看| 欧美在线不卡视频| av一区二区三区| 久久99国产精品久久| 亚洲中国最大av网站| 中文字幕一区二区5566日韩| 日韩一区二区在线看| 欧美视频第二页| 日本韩国欧美一区| 99久久综合国产精品| 国内精品伊人久久久久av影院| 婷婷综合另类小说色区|