精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在Go語(yǔ)言中,這樣使用Json的

開(kāi)發(fā) 前端
Mashal時(shí),結(jié)構(gòu)體的成員變量名將會(huì)直接作為JSON Object的key打包成JSON;Unmashal時(shí),會(huì)自動(dòng)匹配對(duì)應(yīng)的變量名進(jìn)行賦值,大小寫(xiě)不敏感。

Encode

將一個(gè)對(duì)象編碼成JSON數(shù)據(jù),接受一個(gè)interface{}對(duì)象,返回[]byte和error:

func Marshal(v interface{}) ([]byte, error)

Marshal函數(shù)將會(huì)遞歸遍歷整個(gè)對(duì)象,依次按成員類型對(duì)這個(gè)對(duì)象進(jìn)行編碼,類型轉(zhuǎn)換規(guī)則如下:

  • bool類型 轉(zhuǎn)換為JSON的Boolean
  • 整數(shù),浮點(diǎn)數(shù)等數(shù)值類型 轉(zhuǎn)換為JSON的Number
  • string 轉(zhuǎn)換為JSON的字符串(帶""引號(hào))
  • struct 轉(zhuǎn)換為JSON的Object,再根據(jù)各個(gè)成員的類型遞歸打包
  • 數(shù)組或切片 轉(zhuǎn)換為JSON的Array
  • []byte 會(huì)先進(jìn)行base64編碼然后轉(zhuǎn)換為JSON字符串
  • map轉(zhuǎn)換為JSON的Object,key必須是string
  • interface{} 按照內(nèi)部的實(shí)際類型進(jìn)行轉(zhuǎn)換
  • nil 轉(zhuǎn)為JSON的null
  • channel,func等類型 會(huì)返回UnsupportedTypeError
type ColorGroup struct { 
 ID  int 
 Name string 
 Colors []string 
} 
group := ColorGroup{ 
 ID:  1, 
 Name: "Reds", 
 Colors: []string{"Crimson", "Red", "Ruby", "Maroon"}, 
} 
b, err := json.Marshal(group) 
if err != nil { 
 fmt.Println("error:", err) 
} 
os.Stdout.Write(b) 
Output: 
{"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}

Decode

將JSON數(shù)據(jù)解碼

func Unmarshal(data []byte, v interface{}) error

類型轉(zhuǎn)換規(guī)則和上面的規(guī)則類似

var jsonBlob = []byte(`[ 
 {"Name": "Platypus", "Order": "Monotremata"}, 
 {"Name": "Quoll", "Order": "Dasyuromorphia"} 
]`) 
type Animal struct { 
 Name string 
 Order string 
} 
var animals []Animal 
err := json.Unmarshal(jsonBlob, &animals) 
if err != nil { 
 fmt.Println("error:", err) 
} 
fmt.Printf("%+v", animals) 
Output: 
[{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]

結(jié)構(gòu)體

結(jié)構(gòu)體必須是大寫(xiě)字母開(kāi)頭的成員才會(huì)被JSON處理到,小寫(xiě)字母開(kāi)頭的成員不會(huì)有影響。

Mashal時(shí),結(jié)構(gòu)體的成員變量名將會(huì)直接作為JSON Object的key打包成JSON;Unmashal時(shí),會(huì)自動(dòng)匹配對(duì)應(yīng)的變量名進(jìn)行賦值,大小寫(xiě)不敏感。

Unmarshal時(shí),如果JSON中有多余的字段,會(huì)被直接拋棄掉;如果JSON缺少某個(gè)字段,則直接忽略不對(duì)結(jié)構(gòu)體中變量賦值,不會(huì)報(bào)錯(cuò)。

type Message struct { 
 Name string 
 Body string 
 Time int64 
 inner string 
} 
var m = Message{ 
 Name: "Alice", 
 Body: "Hello", 
 Time: 1294706395881547000, 
 inner: "ok", 
} 
b := []byte(`{"nAmE":"Bob","Food":"Pickle", "inner":"changed"}`) 
err := json.Unmarshal(b, &m) 
if err != nil { 
 fmt.Printf(err.Error()) 
 return
} 
fmt.Printf("%v", m) 
Output: 
{Bob Hello 1294706395881547000 ok}

StructTag

如果希望手動(dòng)配置結(jié)構(gòu)體的成員和JSON字段的對(duì)應(yīng)關(guān)系,可以在定義結(jié)構(gòu)體的時(shí)候給成員打標(biāo)簽:

使用omitempty熟悉,如果該字段為nil或0值(數(shù)字0,字符串"",空數(shù)組[]等),則打包的JSON結(jié)果不會(huì)有這個(gè)字段。

type Message struct { 
 Name string `json:"msg_name"`  // 對(duì)應(yīng)JSON的msg_name 
 Body string `json:"body,omitempty"` // 如果為空置則忽略字段 
 Time int64 `json:"-"`    // 直接忽略字段 
} 
var m = Message{ 
 Name: "Alice", 
 Body: "", 
 Time: 1294706395881547000, 
} 
data, err := json.Marshal(m) 
if err != nil { 
 fmt.Printf(err.Error()) 
 return
} 
fmt.Println(string(data)) 
Output: 
{"msg_name":"Alice"}

更靈活地使用JSON

使用json.RawMessage

json.RawMessage其實(shí)就是[]byte類型的重定義。可以進(jìn)行強(qiáng)制類型轉(zhuǎn)換。

現(xiàn)在有這么一種場(chǎng)景,結(jié)構(gòu)體中的其中一個(gè)字段的格式是未知的:

type Command struct { 
 ID int 
 Cmd string 
 Args *json.RawMessage 
}

使用json.RawMessage的話,Args字段在Unmarshal時(shí)不會(huì)被解析,直接將字節(jié)數(shù)據(jù)賦值給Args。我們可以能先解包第一層的JSON數(shù)據(jù),然后根據(jù)Cmd的值,再確定Args的具體類型進(jìn)行第二次Unmarshal。

這里要注意的是,一定要使用指針類型*json.RawMessage,否則在Args會(huì)被認(rèn)為是[]byte類型,在打包時(shí)會(huì)被打包成base64編碼的字符串。

使用interface{}

interface{}類型在Unmarshal時(shí),會(huì)自動(dòng)將JSON轉(zhuǎn)換為對(duì)應(yīng)的數(shù)據(jù)類型:

JSON的boolean 轉(zhuǎn)換為bool
JSON的數(shù)值 轉(zhuǎn)換為float64
JSON的字符串 轉(zhuǎn)換為string
JSON的Array 轉(zhuǎn)換為[]interface{}
JSON的Object 轉(zhuǎn)換為map[string]interface{}
JSON的null 轉(zhuǎn)換為nil

需要注意的有兩個(gè)。一個(gè)是所有的JSON數(shù)值自動(dòng)轉(zhuǎn)換為float64類型,使用時(shí)需要再手動(dòng)轉(zhuǎn)換為需要的int,int64等類型。第二個(gè)是JSON的object自動(dòng)轉(zhuǎn)換為map[string]interface{}類型,訪問(wèn)時(shí)直接用JSON ``Object的字段名作為key進(jìn)行訪問(wèn)。再不知道JSON數(shù)據(jù)的格式時(shí),可以使用interface{}。

自定義類型

如果希望自己定義對(duì)象的打包解包方式,可以實(shí)現(xiàn)以下的接口:

type Marshaler interface { 
 MarshalJSON() ([]byte, error) 
} 
type Unmarshaler interface { 
 UnmarshalJSON([]byte) error 
}

實(shí)現(xiàn)該接口的對(duì)象需要將自己的數(shù)據(jù)打包和解包。如果實(shí)現(xiàn)了該接口,json在打包解包時(shí)則會(huì)調(diào)用自定義的方法,不再對(duì)該對(duì)象進(jìn)行其他處理。

責(zé)任編輯:武曉燕 來(lái)源: Go語(yǔ)言圈
相關(guān)推薦

2011-05-25 13:22:05

PHPJSON

2014-04-09 09:32:24

Go并發(fā)

2024-04-01 00:02:56

Go語(yǔ)言代碼

2022-11-03 20:38:01

CMD命令Go

2023-12-21 07:09:32

Go語(yǔ)言任務(wù)

2024-04-07 11:33:02

Go逃逸分析

2021-07-15 23:18:48

Go語(yǔ)言并發(fā)

2023-10-09 07:14:42

panicGo語(yǔ)言

2013-06-25 09:52:32

GoGo語(yǔ)言Go編程

2020-08-12 08:51:19

Go語(yǔ)言Concurrency后臺(tái)

2021-06-08 07:45:44

Go語(yǔ)言優(yōu)化

2023-07-29 15:03:29

2022-07-19 12:25:29

Go

2023-11-30 08:09:02

Go語(yǔ)言

2024-01-07 23:11:16

defer?Go語(yǔ)言

2023-01-12 08:52:50

GoroutinesGo語(yǔ)言

2023-12-30 18:35:37

Go識(shí)別應(yīng)用程序

2023-11-21 15:46:13

Go內(nèi)存泄漏

2024-01-08 07:02:48

數(shù)據(jù)設(shè)計(jì)模式

2025-03-27 00:45:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲三级电影全部在线观看高清| 欧美精品一级片| 亚洲熟妇av乱码在线观看| 在线日韩成人| 国产亚洲欧洲997久久综合| 蜜月aⅴ免费一区二区三区| 日韩欧美亚洲v片| 日本一级黄色大片| 欧美日韩黄色| 国产精品久久久久久久久免费桃花| 91精品国产高清自在线看超| 国产精品91av| 综合久久2o19| 综合激情一区| 欧美日韩免费一区二区三区视频| 蜜桃免费一区二区三区| 国产精品成人久久| 91综合精品国产丝袜长腿久久| 亚洲欧美视频在线观看视频| 狠狠爱一区二区三区| 久久久久成人精品无码| 欧美1区2区3| 欧美日韩亚洲精品一区二区三区 | 久久偷看各类wc女厕嘘嘘偷窃| 69亚洲精品久久久蜜桃小说| 性人久久久久| 午夜激情一区二区| 久久精品欧美| 精品国产xxx| 激情综合网五月| 欧美性色aⅴ视频一区日韩精品| 品久久久久久久久久96高清| 成人一二三四区| 不卡视频在线| 91麻豆精品国产91久久久使用方法 | 欧美一级免费视频| 噜噜噜在线视频| 日本乱码一区二区三区不卡| 99国产欧美久久久精品| 欧美一级成年大片在线观看 | 亚洲伊人伊色伊影伊综合网| 国产精品久久国产精品| 日本少妇毛茸茸高潮| 欧美成人直播| 亚洲爱爱爱爱爱| 欧美 国产 日本| 午夜视频成人| 国产成人日日夜夜| 97国产精品视频| 欧美大波大乳巨大乳| 欧美激情福利| 亚洲午夜精品一区二区三区他趣| 五月天男人天堂| 成人小说亚洲一区二区三区 | 国产日产欧美视频| 蜜桃视频动漫在线播放| 午夜精品久久久久久久蜜桃app| 小泽玛利亚av在线| 无码国产精品高潮久久99| 首页亚洲欧美制服丝腿| 久久综合九色九九| 最近日本中文字幕| 久久69成人| 欧美日韩中字一区| 99热亚洲精品| av一本在线| 成人黄色a**站在线观看| 国产成人精品免费久久久久| 黄色录像免费观看| 欧美一区二区三区红桃小说| 欧美日韩一区二区三区免费看| 免费男同深夜夜行网站| 直接在线观看的三级网址| 亚洲日本在线天堂| 欧美黄色免费网址| 又爽又大又黄a级毛片在线视频| 国产欧美一区二区三区网站| 亚洲综合大片69999| 日韩在线视频不卡| 日本成人在线电影网| 韩剧1988在线观看免费完整版| 亚洲天堂日韩av| 综合激情在线| 91av在线免费观看视频| 国产乱码77777777| 国产一区啦啦啦在线观看| 国产成人高清激情视频在线观看| 国产免费www| 狠狠色丁香婷婷综合| 国产成人涩涩涩视频在线观看| 国产成人av免费| 国产精品亚洲综合色区韩国| 欧美激情视频一区二区三区不卡 | www.黄色av| 日产国产欧美视频一区精品| 91精品视频免费| 亚洲精品无码久久久久| 国产精品18久久久久久久久 | 日本国产在线| 丁香五精品蜜臀久久久久99网站 | 草b视频在线观看| 秋霞午夜在线观看| 久久久久久久久岛国免费| 国产一区精品在线| 人妻精品一区一区三区蜜桃91| 国产乱理伦片在线观看夜一区| 国产精品欧美日韩| 国产亚洲久一区二区| 国产精品影音先锋| 日韩精彩视频| 国产桃色电影在线播放| 亚洲线精品一区二区三区| 春日野结衣av| 久久国际精品| 伊人一区二区三区久久精品| 蜜桃传媒一区二区亚洲| 国产综合婷婷| 国外色69视频在线观看| 日本中文字幕免费| 久99久精品视频免费观看| 成人黄色中文字幕| 国产日韩一级片| 国产成人免费视频网站| 日韩av免费电影| 九色porny丨入口在线| 日韩一区国产二区欧美三区| 亚洲天堂一区二区在线观看| 欧美国产亚洲精品| 中文字幕日韩av| 免费精品在线视频| 久久最新视频| 精品蜜桃一区二区三区| 暖暖在线中文免费日本| 亚洲1区2区3区视频| 日本特黄在线观看| 婷婷另类小说| 久久久人成影片一区二区三区| 在线观看中文字幕网站| 国产日产欧产精品推荐色 | 欧美黑人xx片| 91精品国产欧美一区二区18| 欧美日韩久久婷婷| 亚洲日本va| 美女少妇精品视频| 国产福利视频导航| 久久综合九色综合欧美就去吻| 日本免费高清不卡| 韩国美女久久| 在线播放/欧美激情| 久久久久99精品成人| 夜间精品视频| 亚洲综合成人婷婷小说| 综合久久2019| 日韩欧美亚洲国产精品字幕久久久| 永久免费未满蜜桃| 国产在视频线精品视频www666| 欧美一级视频在线观看| 日本天堂影院在线视频| 日韩人体视频一二区| 网站在线你懂的| 日韩理论电影中文字幕| 91国语精品自产拍在线观看性色| 三级在线观看网站| ...xxx性欧美| 国产a级一级片| 免费成人网www| 欧美成人精品在线| 亚洲精品97久久中文字幕| 国产午夜亚洲精品羞羞网站| 男人靠女人免费视频网站| 精品久久久中文字幕| 久久成人在线视频| 精品黑人一区二区三区国语馆| 亚洲制服丝袜av| 91av视频免费观看| 久久av影视| 国产精品第二页| 午夜视频免费看| 欧美性猛交xxxx富婆弯腰| 久久久久久国产精品日本| 国内久久精品| 久久日韩精品| 久草综合在线| 91精品国产一区| a天堂中文在线| 疯狂做受xxxx欧美肥白少妇| 大又大又粗又硬又爽少妇毛片| 欧美啪啪一区| 国产拍精品一二三| 国产精品免费播放| 欧美午夜电影在线| 黄色av片三级三级三级免费看| 国产乱码精品1区2区3区| av免费播放网址| 亚洲一区欧美| 日本婷婷久久久久久久久一区二区 | 最近中文字幕一区二区三区| 中文字幕在线视频播放| 日本va欧美va欧美va精品| 精品一区二区三区无码视频| 四虎国产精品永久在线国在线 | 中文文字幕文字幕高清| 久久国产精品一区二区| 黄色一级视频片| 好吊妞视频这里有精品| 中文字幕av一区二区| www.av黄色| 欧美日韩国产综合久久| 国产精品suv一区二区三区| 成人av动漫在线| 亚洲一级片免费| 日韩久久久久| 国产精品网站视频| 五月天婷婷在线视频| 亚洲第一男人av| 日韩欧美一区二区一幕| 中文字幕一区在线| 波多野结衣福利| 久热精品在线| 国产无限制自拍| 欧美激情性爽国产精品17p| 天天好比中文综合网| 日本中文字幕视频一区| 欧美在线观看一区二区三区| 欧美一区二区三区成人片在线| 欧美色偷偷大香| 日韩欧美在线观看免费| 午夜精品一区二区三区免费视频 | 亚洲一区二区在线| 99欧美精品| 日韩日本欧美亚洲| 国产成人三级在线播放| 欧美日韩国产综合草草| 涩涩视频在线观看| 欧美在线观看一区二区| 精品免费囯产一区二区三区 | www日韩在线| 国产精品1区2区3区| 亚洲精品视频三区| 久久99久久久久| 日本不卡一区二区在线观看| 蜜臀久久99精品久久久画质超高清| 宅男一区二区三区| 国产精品香蕉| 国产精品xxx在线观看www| 成人国产二区| 欧美诱惑福利视频| 欧美成人h版| 美女国内精品自产拍在线播放| h视频在线免费| 中文字幕日韩精品在线观看| yiren22亚洲综合伊人22| 国产亚洲人成网站在线观看| jlzzjlzzjlzz亚洲人| 91精品婷婷国产综合久久| 国产免费av观看| 日韩丝袜情趣美女图片| 亚洲av无码乱码国产精品| 日韩女优电影在线观看| 日本免费不卡视频| 日韩精品中文字幕久久臀| 国产又粗又猛又爽又黄91| 午夜在线电影亚洲一区| 青青操免费在线视频| 欧美视频精品一区| 一级片在线免费播放| 欧美日韩在线不卡| 99久久久国产精品无码免费| 日韩免费视频一区| 少妇人妻精品一区二区三区| 亚洲精品中文字幕女同| 成人免费在线视频网| 久久精品在线视频| 欧美白人做受xxxx视频| 精品日韩欧美在线| 91国内精品视频| 一本一本大道香蕉久在线精品| 中文字幕一区二区人妻视频| 欧美日韩五月天| wwwxxxx国产| 日韩精品极品视频| 亚洲国产精品18久久久久久| 亚洲国产精品大全| 国产二区视频在线观看| 久久五月情影视| 国产剧情av在线播放| 欧美激情乱人伦| 一根才成人网| 92国产精品视频| 欧美sss在线视频| 亚洲无玛一区| 狠狠综合久久av一区二区蜜桃 | 天堂资源在线中文| 久久久久久久亚洲精品| av片在线观看永久免费| 97精品国产91久久久久久| 精品日本视频| 国产精品美女呻吟| 亚洲超碰在线观看| 91青青草免费观看| 麻豆国产精品| 欧美日本亚洲| 精品在线观看入口| 影音先锋成人资源网站| 老司机午夜精品视频| 国产成人av片| 中文字幕在线不卡| 人人爽人人爽人人片av| 精品免费一区二区三区| 午夜视频在线观看网站| 日韩美女中文字幕| 日韩精品麻豆| 国产一区福利视频| 伊人久久大香线蕉综合四虎小说| 久久久久久久久久久久久国产精品| 国产欧美日本| 男插女视频网站| 中文字幕乱码日本亚洲一区二区 | 天堂视频免费看| 91视频国产观看| 永久免费看mv网站入口78| 亚洲免费看黄网站| 久草免费在线视频观看| 91黄色免费看| 曰批又黄又爽免费视频| 精品亚洲永久免费精品 | 欧美做受高潮1| 国产精品videossex| 麻豆一区二区三区在线观看| 久久成人综合网| 林心如三级全黄裸体| 在线欧美日韩精品| 在线观看中文字幕2021| 亚洲无av在线中文字幕| 丝袜诱惑一区二区| 国产精品视频xxx| 要久久爱电视剧全集完整观看 | 久久一区二区三区喷水| av五月天在线| 国产一区91精品张津瑜| 日韩精品电影一区二区三区| 亚洲欧美日韩中文播放| 波多野结衣视频在线观看| 亚洲片av在线| www在线视频| 欧美亚洲日本黄色| 久久人人爽人人爽人人片av不| 台湾无码一区二区| 国产69精品久久99不卡| 成年人在线观看av| 精品久久久久久电影| 一级黄色片在线看| 神马国产精品影院av| a国产在线视频| 国产精品久久久久久久久久小说| 九九综合九九| 老司机午夜av| www.激情成人| 国产一区二区精彩视频| 4438x成人网最大色成网站| 国产美女av在线| 国产a级全部精品| 国产精品一区二区99| 男女男精品视频站| 中文字幕一区二区日韩精品绯色| 91 中文字幕| 欧美黑人xxxx| 欧美a级网站| 最近中文字幕一区二区| 亚洲色图欧洲色图| 性欧美一区二区三区| 91精品国产沙发| 日韩av在线播放网址| 成年人看片网站| 欧美日韩亚洲成人| 成年人视频在线免费观看| 成人网在线免费看| 亚洲精品少妇| 欧美性猛交乱大交| 国产精品卡一卡二卡三| 成人免费视频毛片| 亚洲午夜av久久乱码| 亚洲图片小说区| 亚洲春色在线| 葵司免费一区二区三区四区五区| 国产传媒在线看| 日韩午夜精品电影| 国产欧美一区二区三区精品酒店| 一本一本久久a久久精品综合妖精| 国产精品亚洲一区二区三区妖精| 一级片中文字幕| 按摩亚洲人久久| 日韩精品社区| 日本成人在线免费| 欧洲另类一二三四区| 青春草视频在线| 丝袜足脚交91精品| av一区二区三区在线| 97成人在线观看| 日本欧美中文字幕|