JSON是一種輕量級的數(shù)據(jù)交換格式,而Golang提供了豐富的API來處理JSON數(shù)據(jù)。在本文中,我們將探討如何生成和解析JSON數(shù)據(jù)。
生成JSON數(shù)據(jù)
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` City string `json:"city"` } func main() { person := Person{ Name: "Alice", Age: 25, City: "Beijing", } result, err := json.Marshal(person) if err != nil { fmt.Println("json.Marshal error:", err) return } fmt.Println(string(result)) }
上述代碼定義了一個名為Person的結(jié)構(gòu)體,其中包含名稱、年齡和所在城市等屬性。json.Marshal函數(shù)將該結(jié)構(gòu)體編碼為JSON格式,我們可以使用string()方法將其打印出來。
解析JSON數(shù)據(jù)
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` City string `json:"city"` } func main() { data := []byte(`{"name":"Alice","age":25,"city":"Beijing"}`) var person Person err := json.Unmarshal(data, &person) if err != nil { fmt.Println("json.Unmarshal error:", err) return } fmt.Printf("name: %s, age: %d, city: %s", person.Name, person.Age, person.City) }
上述代碼定義了一個包含名稱、年齡和所在城市等屬性的Person結(jié)構(gòu)體,我們使用json.Unmarshal()函數(shù)將JSON數(shù)據(jù)解碼為該結(jié)構(gòu)體格式,并輸出其中的屬性值。
在Golang中,通過json.Marshal()和json.Unmarshal()函數(shù)可以方便地進行JSON數(shù)據(jù)的編碼和解碼。當(dāng)然,對于更復(fù)雜的JSON數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),我們需要使用相關(guān)的工具函數(shù)和庫來完成需要的操作。