精品欧美一区二区三区在线观看 _久久久久国色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)

久久一留热品黄| 久久久成人网| 欧美精品一区二区三区在线| 欧美 日韩 国产 高清| 欧美成人片在线| 激情六月婷婷久久| 91精品国产色综合久久不卡98口| 成人免费无遮挡无码黄漫视频| 日韩欧乱色一区二区三区在线| 亚洲国产精品久久不卡毛片 | 成人黄色av片| 在线看免费av| 99热这里都是精品| 成人久久一区二区| 九九热精品视频在线| 影视亚洲一区二区三区| 亚洲人成网站色ww在线| 苍井空张开腿实干12次| 高清欧美日韩| 欧美日韩色婷婷| 少妇久久久久久被弄到高潮| 国产乱理伦片a级在线观看| 成人午夜av影视| 成人黄色免费在线观看| 中文字幕在线播| 伊人久久亚洲美女图片| 日韩在线观看免费| 成都免费高清电影| 精品综合久久88少妇激情| 欧美精品一二三| 日本爱爱免费视频| 在线观看特色大片免费视频| 亚洲一区二区三区四区五区黄| 在线看视频不卡| 国产在线观看免费| 久久久精品tv| 久久综合久久综合这里只有精品| 亚洲av无码一区二区乱子伦| 国产一区不卡精品| 国产日韩精品在线| 人妻中文字幕一区二区三区| 午夜综合激情| 91chinesevideo永久地址| 欧美黄色免费观看| 欧美日韩网址| 欧美大片在线看| 欧美日韩精品一区二区三区视频播放| 色综合天天爱| 久久精品国产电影| 国产在线观看免费视频软件| 日韩成人综合| 色偷偷888欧美精品久久久| 国产人妻大战黑人20p| 一本色道久久综合亚洲精品酒店 | 黄色软件在线| 久久久久国产免费免费| 欧美一区亚洲二区| 九色国产在线观看| 欧美激情一区二区三区在线| 视频在线99re| 欧美r级在线| 亚洲欧美日韩在线| 国产a级黄色大片| 久久电影网站| 欧美午夜电影在线| 四季av一区二区| 粉嫩一区二区三区在线观看| 欧美一区二区女人| 中文字幕18页| 天堂99x99es久久精品免费| 日韩精品黄色网| 欧美18—19性高清hd4k| 日韩欧美高清| 美日韩精品免费观看视频| 青青草手机视频在线观看| 亚洲精品极品| 国产精品美女午夜av| 91精品人妻一区二区三区果冻| 国产精品一二三四| 精品伦精品一区二区三区视频| 日色在线视频| 国产精品久久久久久久久图文区| 99久re热视频精品98| 白浆在线视频| 欧美三级蜜桃2在线观看| 999热精品视频| 日韩影视在线观看| 日韩中文字幕国产精品| 国产精品不卡av| 天堂蜜桃91精品| 亚洲www视频| 三级在线播放| 综合自拍亚洲综合图不卡区| ww国产内射精品后入国产| 91精品店在线| 欧美成人一区二区三区 | 国产精品久久久久一区二区三区| 99热都是精品| 亚洲承认视频| 精品久久久久久无| 一级片久久久久| 亚洲国产日本| 91精品久久久久久久久青青| 日韩欧美在线番号| 亚洲欧美国产毛片在线| 成人羞羞国产免费网站| 在线日韩成人| 日韩在线免费视频| 天天干天天干天天| 成人性色生活片免费看爆迷你毛片| 欧美一区二区三区四区在线观看地址| 国产不卡在线| 欧美三级三级三级爽爽爽| 无码国产精品一区二区免费式直播| 色综合五月天| 国产精品成人播放| 亚洲 小说区 图片区 都市| 亚洲柠檬福利资源导航| 欧美日韩在线观看不卡| 牛牛影视久久网| 欧美日韩高清在线观看| 亚洲字幕av一区二区三区四区| 91在线观看下载| 欧美这里只有精品| 国产成年精品| www.亚洲成人| 中文字幕人妻一区二区三区视频| 99久久久久久| 福利视频一区二区三区四区| 激情不卡一区二区三区视频在线| 亚洲最大中文字幕| 秋霞av一区二区三区| 91香蕉视频mp4| 少妇人妻无码专区视频| 一区二区在线视频观看| 伦伦影院午夜日韩欧美限制| 中文字幕一区二区在线视频 | 精品久久久久久久人人人人传媒 | 欧美日韩色综合| av黄色在线免费观看| 亚洲综合丁香| 久99久视频| 在线看片国产福利你懂的| 亚洲国产精品一区二区久| 国产无遮挡又黄又爽又色| 丁香亚洲综合激情啪啪综合| 日韩亚洲欧美一区二区| 久久gogo国模啪啪裸体| 欧美成人第一页| 亚洲av无码一区二区三区性色 | 精品不卡一区二区| 久久综合久久99| 大j8黑人w巨大888a片| 农村少妇一区二区三区四区五区 | 国产又爽又黄的视频| 99视频热这里只有精品免费| 可以在线看的av网站| 网友自拍区视频精品| 日韩免费在线视频| 91高清在线视频| 欧美日韩精品一区视频| 天堂网avav| 丁香另类激情小说| 亚洲 高清 成人 动漫| 久久91麻豆精品一区| 国产精品高潮呻吟视频| 麻豆免费在线观看| 91精品国产高清一区二区三区蜜臀| 日韩a级片在线观看| 成人午夜免费av| 日日橹狠狠爱欧美超碰| 不卡在线一区| 亚洲综合一区二区不卡| 精品极品在线| 自拍偷拍亚洲欧美| 亚洲爱爱综合网| 欧美日韩国产页| a资源在线观看| 国产成人午夜精品影院观看视频| 少妇无码av无码专区在线观看 | 穿情趣内衣被c到高潮视频| 一区二区网站| 国产精品7m视频| 国产欧美黑人| 日韩精品一区二区三区第95| 中文av免费观看| 亚洲国产综合91精品麻豆| 丰满少妇一区二区三区| 久99久精品视频免费观看| 免费一级淫片aaa片毛片a级| 精品日韩免费| 99久久99久久| 国产精品伊人| 欧美亚洲一区在线| 免费大片在线观看www| 日韩精品在线免费观看| 国产一区二区三区四区视频| 精品久久久视频| 欧美a级片免费看| 91日韩在线专区| 在线成人精品视频| 日本不卡中文字幕| 欧日韩免费视频| 欧美电影免费播放| 蜜桃视频在线观看成人| 欧美影院在线| 国产啪精品视频| 婷婷电影在线观看| 久久6精品影院| 一本一道波多野毛片中文在线| 亚洲国产成人精品电影| 97超碰资源站| 欧美伊人精品成人久久综合97| 久久精品视频9| 有码一区二区三区| 国产sm调教视频| 91一区一区三区| 亚洲成人精品在线播放| 麻豆精品新av中文字幕| 国产av无码专区亚洲精品| 欧美人成网站| 亚洲小说欧美另类激情| 精品国产aⅴ| 欧美激情第一页在线观看| 97色成人综合网站| 18成人免费观看网站下载| 成人精品高清在线视频| 日本精品视频网站| 中文字幕人成乱码在线观看| 久久人人爽人人爽人人片av高请 | 视频免费1区二区三区| 日韩精品91亚洲二区在线观看| 亚洲不卡中文字幕无码| 综合精品久久| 亚洲第一综合网站| 99久久综合| 最新欧美日韩亚洲| 日韩黄色大片| 亚洲制服欧美久久| 欧美wwwww| 宅男噜噜99国产精品观看免费| 不卡一区2区| 亚洲人成网站在线观看播放| 久久五月天小说| 亚洲欧洲国产精品久久| 欧美亚洲高清| 亚洲一区二区三区四区中文| 日韩免费看片| 天堂v在线视频| 亚洲欧美网站在线观看| 亚洲国产精品影视| 欧美理论在线| 精品这里只有精品| 免费欧美在线| 日本久久久久久久久久久久| 麻豆成人免费电影| 亚洲一区二区图片| 国产成人精品一区二区三区四区 | 亚洲综合一区在线| 豆国产97在线 | 亚洲| 亚洲第一狼人社区| 久久夜色精品国产噜噜亚洲av| 在线亚洲欧美专区二区| 国产精品成人无码| 91麻豆精品国产综合久久久久久| 精品久久久免费视频| 337p日本欧洲亚洲大胆精品| 手机亚洲第一页| 日韩在线免费高清视频| 天天色天天射天天综合网| 欧美一级视频一区二区| 四虎4545www精品视频| 91欧美精品成人综合在线观看| 99精品国产一区二区三区2021| 久久久神马电影| 青青一区二区三区| 国产欧美精品aaaaaa片| 亚洲一区二区成人| 伊人网在线综合| 成人免费看的视频| 性の欲びの女javhd| 亚洲老司机在线| 日产精品久久久| 欧美精品在线一区二区三区| 色婷婷av一区二区三区之红樱桃 | 视频一区国产精品| 欧美~级网站不卡| 免费无码国产v片在线观看| 美女一区二区视频| 亚洲高清无码久久| 国产精品成人一区二区艾草| 日本少妇吞精囗交| 欧美日韩中字一区| 少妇高潮久久久| www.久久久久久.com| 国产盗摄——sm在线视频| 国产精品偷伦视频免费观看国产| 国产成人精品亚洲线观看| 日本一区二区久久精品| 欧美特黄a级高清免费大片a级| 久久久久久久片| 99视频精品在线| 澳门黄色一级片| 欧美在线一区二区三区| 欧美 日韩 国产 精品| 色妞欧美日韩在线| 一区二区乱码| 国产在线精品一区| 午夜精品婷婷| 日本美女视频一区| 欧美国产亚洲另类动漫| 美日韩一二三区| 日韩精品综合一本久道在线视频| avav免费在线观看| 欧美一级大片在线免费观看| 4438全国亚洲精品观看视频| 亚洲一区二区免费视频软件合集 | 爱情岛论坛亚洲自拍| 国产精品日日摸夜夜摸av| 日本特级黄色片| 欧美精品一区二区三区很污很色的 | 国产午夜久久av| 日韩激情久久| 天使萌一区二区三区免费观看| 日本三级日本三级日本三级极| 亚洲精品中文字幕乱码三区| 91麻豆成人精品国产| 尤物九九久久国产精品的分类 | 亚洲黄色影片| 国产成人精品一区二区在线小狼 | 成人综合激情网| 日本青青草视频| 日韩欧美二区三区| 成人免费高清| 亚洲伊人久久综合| 午夜免费一区| 亚洲图片 自拍偷拍| 国产精品理论在线观看| 伊人影院中文字幕| 在线观看中文字幕亚洲| 亚洲日本在线观看视频| 欧洲视频一区二区三区| 天堂va蜜桃一区二区三区| 亚洲av无码国产精品麻豆天美| 一本高清dvd不卡在线观看| 桃花色综合影院| 欧洲成人免费视频| 国产aⅴ精品一区二区三区久久| 日韩欧美在线播放视频| 久久久久99精品国产片| 亚洲欧美一二三区| 尤物yw午夜国产精品视频| 欧美大片网站| 中日韩在线视频| 国产一区二区不卡在线| 久久午夜无码鲁丝片| 亚洲国产精品推荐| 欧美成人ⅴideosxxxxx| 一本色道婷婷久久欧美 | 91久久精品美女| 欧美日本一区二区高清播放视频| 日本性生活一级片| 欧美性生交xxxxx久久久| 国产黄色在线| 成人激情视频小说免费下载| 亚洲欧美亚洲| 老司机福利av| 欧美二区三区的天堂| av第一福利在线导航| 欧美午夜欧美| 激情丁香综合五月| 日韩免费一级片| 一区二区欧美日韩视频| 国产专区精品| 欧美日韩在线不卡视频| 国产精品国产自产拍高清av王其| 国产成人精品a视频| 91国产美女在线观看| 日韩久久视频| 少妇激情一区二区三区视频| 欧美视频一区在线观看| 羞羞视频在线观看不卡| 蜜桃av噜噜一区二区三| 精品在线播放免费| 午夜毛片在线观看| 精品国产一区二区三区在线观看 | 加勒比av一区二区| 香蕉视频一区二区| 中文在线不卡视频| 136导航精品福利| 手机看片福利日韩| 亚洲综合视频网| 尤物在线视频| 久久亚洲午夜电影| 国产精品自拍一区| 无码人妻丰满熟妇区五十路| 欧美高清性猛交| 成人女性视频| 成人无码www在线看免费| 欧美一区日本一区韩国一区|