JSON是當前最常用的數據序列化和傳輸格式之一,它比XML更加簡潔,易讀和易于處理。在Go語言中,我們可以通過內置的標準庫encoding/json來進行JSON的序列化和反序列化。
我們首先來看一個簡單的JSON序列化示例:
package main import ( "encoding/json" "fmt" ) // 定義一個結構體 type Person struct { Name string Age int } func main() { // 創建一個Person實例 p := Person{"張三", 20} // 將結構體序列化為JSON格式的字符串 b, err := json.Marshal(p) if err != nil { panic(err) } // 打印輸出JSON字符串 fmt.Println(string(b)) }
運行上面的程序,將得到以下輸出:
{"Name":"張三","Age":20}
我們可以看到,JSON序列化把Person實例中的字段直接轉換為JSON對象的鍵值對。這里使用了json.Marshal方法實現序列化,它將結構體轉換為JSON格式的字節數組。
下面我們再來看一個稍復雜的JSON序列化示例,它展示了如何序列化嵌套的結構體:
package main import ( "encoding/json" "fmt" ) // 定義嵌套的結構體類型 type Location struct { Latitude float64 Longitude float64 } type City struct { Name string Location Location } func main() { // 創建一個City實例 c := City{"杭州", Location{30.27, 120.15}} // 將結構體序列化為JSON格式的字符串 b, err := json.Marshal(c) if err != nil { panic(err) } // 打印輸出JSON字符串 fmt.Println(string(b)) }
運行上述代碼,將得到以下輸出:
{"Name":"杭州","Location":{"Latitude":30.27,"Longitude":120.15}}
我們可以看到,嵌套的結構體被序列化為嵌套的JSON對象,每個對象的屬性對應結構體中的字段。
總結:
JSON序列化是將數據對象轉換為JSON格式的字符串的過程,Go語言標準庫提供了encoding/json包來實現此功能。通過序列化,我們可以將一個結構體轉化為JSON格式,方便數據在不同系統或語言之間的傳遞和交流。