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

go json序列化和反序列化

錢衛國2年前8瀏覽0評論

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,并且很容易被人類閱讀和編寫。在Go語言中,我們可以使用標準庫提供的encoding/json包來進行JSON的序列化和反序列化。

在Go語言中,結構體的字段都必須首字母大寫才能被外部包訪問到。這也意味著,我們需要在結構體定義中為字段添加一個標簽,來說明字段在JSON中的名稱。標簽的格式為key:value,其中key是json,value是字段在JSON中的名稱。

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

以上是一個簡單的Person結構體,其中Name和Age字段都有一個json標簽,分別指定它們在JSON中對應的名稱。下面我們來看一下Person結構體的序列化和反序列化。

序列化

將一個結構體類型的值轉換成JSON格式的數據,稱為序列化。在Go語言中,我們可以使用encoding/json包中的Marshal函數來實現序列化。

func main() {
person := Person{Name: "Tom", Age: 25}
jsonData, err := json.Marshal(person)
if err != nil {
log.Fatalf("Marshal failed: %s", err)
}
fmt.Println(string(jsonData))
}

運行上面的代碼,輸出結果為:

{"name":"Tom","age":25}

在輸出結果中,我們可以看到將person結構體序列化成了JSON格式的數據。

反序列化

將一個JSON格式的數據轉換成結構體類型的值,稱為反序列化。在Go語言中,我們可以使用encoding/json包中的Unmarshal函數來實現反序列化。

func main() {
jsonStr := `{"name":"Tom","age":25}`
person := new(Person)
err := json.Unmarshal([]byte(jsonStr), person)
if err != nil {
log.Fatalf("Unmarshal failed: %s", err)
}
fmt.Printf("%+v", person)
}

運行上面的代碼,輸出結果為:

&{Name:Tom Age:25}

在輸出結果中,我們可以看到將JSON格式的數據反序列化成了person結構體。

以上就是關于Go語言JSON序列化和反序列化的簡單介紹。