json格式可以算我們日常最常用的序列化格式之壹了,Go語言作為壹個由Google開發,號稱互聯網的C語言的語言,自然也對JSON格式支持很好。官方提供的Json解析包已經非常強大,我們接下來講解Json的序列化與反序列化操作。另外還有壹些第三方的Json解析庫,也能夠高效的操作Json對象,比如simplejson,ffjson等。下面是兩個比較重要的函數:
? Json Marshal:將數據編碼成json字符串
Marshal 用於將struct對象序列化到json對象中。v是interface{}類型,任何類型都實現了空接口。
1:tag中的第壹個參數是用來指定別名,比如Name 指定別名為 username `json:"username"`
2:如果不想指定別名但是想指定其他參數用逗號來分隔,omitempty 指定到壹個field時,如果在賦值時對該屬性未賦值或者對該屬性賦值為 zero value,那麽將Person序列化成json時會忽略該字段
3:- 指定到壹個field時,無論有沒有值,將Person序列化成json時都會忽略該字段
4:string 指定到壹個field時,比如Person中的Count為int類型 如果沒有任何指定在序列化到json之後也是int 比如這個樣子 “Count”:0,但是如果指定了string之後序列化之後也是string類型的,那麽就是這個樣子"Count":"0"
? struct序列化為Json
? slice序列化為Json
? map 序列化為Json
? Json Unmarshal:將json字符串解碼到相應的數據結構,Unmarshal的第壹個參數是[]byte,第二個參數是接受json解析的數據結構。
下面我們依次講解Json的操作。
1:將Json序列化進入結構體
2::將Json序列化到結構體slice
3:將Json序列化進Map
4:將Json序列化進Slice