平時在開發程式時,數據
序列化和反序列化是非常重要的過程。應用程式能夠將內存中的數據轉換為可存儲或傳輸的格式,例如JSON以及將來自外部源的數據轉換為應用程序能夠理解的內存結構。Golang 處理JSON數據非常容易。今天將介紹如何在Golang中處理JSON數據的序列化和反序列化過程。
JSON 又叫作 JavaScript Object Notation 是一種數據交換格式,使用易於理解的文本表示數據結構。JSON是通用的,並且用於數據存儲、配置文件、API通信等多個領域。JSON數據由鍵值對組成,其中鍵是字符串,值可以是數字、字符串、布林值、對象、數組或null。在Golang中,我們可以使用標準庫中的工具來處理JSON數據。
JSON序列化是將內存中的數據結構轉換為JSON格式的過程。可以使用encoding/json 。
這邊定義一個 Person結構體,然後使用 json.Marshal函數將結構體序列化為JSON數據。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
person := Person{Name: "Alice", Age: 30}
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("JSON序列化失敗:", err)
return
}
fmt.Println(string(jsonData))
}
JSON反序列化是將JSON數據轉換為Golang數據結構的過程。同樣可以使用 encoding/json 實現這過程。
使用 json.Unmarshal 函數將JSON數據反序列化為Person結構體。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonData := []byte(`{"name":"Bob","age":25}`)
var person Person
err := json.Unmarshal(jsonData, &person)
if err != nil {
fmt.Println("JSON反序列化失敗:", err)
return
}
fmt.Println("名字:", person.Name)
fmt.Println("年齡:", person.Age)
}
JSON是一個常見的數據交換格式。使用encoding/json 套件,可以輕鬆將Golang數據結構轉換為JSON,以及將JSON轉換為Golang數據結構。