欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

go列化和反序列化json

林子帆1年前9瀏覽0評論

Go語言是現(xiàn)代化的高級編程語言,在處理數(shù)據(jù)的時候,用JSON是一種非常流行的做法。而在Go語言中,我們可以通過列化和反序列化的方式來處理JSON數(shù)據(jù),與此相關(guān)的有以下幾個函數(shù)。

func Marshal(v interface{}) ([]byte, error)
func Unmarshal(data []byte, v interface{}) error
func NewDecoder(r io.Reader) *Decoder
func NewEncoder(w io.Writer) *Encoder

其中,func Marshal(v interface{})函數(shù)是將Go語言中的數(shù)據(jù)類型轉(zhuǎn)換成JSON格式;func Unmarshal(data []byte, v interface{})函數(shù)就是將JSON格式的數(shù)據(jù)轉(zhuǎn)換成Go語言中的數(shù)據(jù)類型。

比如我們有以下的Go語言結(jié)構(gòu)體:

type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
Sex  string `json:"sex"`
}

那么我們就可以通過Marshal()函數(shù)來將對象轉(zhuǎn)換為JSON數(shù)據(jù):

person := Person{"Tom", 18, "male"}
json, err := json.Marshal(person)
if err != nil {
fmt.Println("JSON Marshal error!")
return
}
fmt.Println(string(json))

輸出結(jié)果為:

{"name":"Tom","age":18,"sex":"male"}

同樣,我們也可以通過Unmarshal()函數(shù)將JSON數(shù)據(jù)轉(zhuǎn)換為Go語言對象:

data := []byte(`{"name":"Tom","age":18,"sex":"male"}`)
var person Person
err := json.Unmarshal(data, &person)
if err != nil {
fmt.Println("JSON Unmarshal error!")
return
}
fmt.Println(person)

輸出結(jié)果為:

{Tom 18 male}

除了使用Marshall() 和 Unmarshall()函數(shù),我們還可以使用NewEncoder() 和 NewDecoder()函數(shù)對JSON流進行讀寫操作。這種方式適合于需要將JSON數(shù)據(jù)流轉(zhuǎn)換成Go語言對象的場景。

總結(jié)一下,Go語言提供了豐富的JSON序列化和反序列化的方法,可以輕松地完成JSON數(shù)據(jù)和Go語言對象之間的互相轉(zhuǎn)換。