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序列化和反序列化的簡單介紹。
上一篇html彈框界面源代碼
下一篇go json數據