Go語言基礎:JSON
近年來,JSON 作為跨應用程式傳輸資料的格式越來越受歡迎。JSON(JavaScript 物件表示法)是一種緊湊且易於理解的資料交換標準。它廣泛應用於伺服器到伺服器通訊、移動應用程式和 Web 應用程式。
GoLang 是一種功能強大的程式語言,其簡潔性、併發性和可擴充套件性使其脫穎而出。本文將介紹 GoLang 中 JSON 的基礎知識。
什麼是 JSON?
JSON 是一種簡單、輕量級的資料交換格式,易於人類和機器閱讀和生成。它是一種完全與語言無關的文字格式,遵循 C 系列語言程式設計師熟悉的原則。
JSON 中主要有兩種結構型別:物件和陣列。物件是鍵值對的無序集合,其中鍵為字串,值可以是任何 JSON 資料型別。陣列是以有序方式儲存值的集合,可以包含任何有效的 JSON 資料型別。
使用 GoLang 編碼 JSON
我們可以使用 GoLang 提供的內建“encoding/json”包來編碼和解碼 JSON 資料。為了將 GoLang 資料編碼成 JSON 格式,我們需要建立一個與 JSON 物件對映的結構體。
例如,考慮一個名為“Person”的結構體。它有兩個欄位:“Name”和“Age”。
type Person struct { Name string `json:"name"` Age int `json:"age"` }
要將此結構體編碼成 JSON 格式,我們可以使用“json.Marshal”函式。
示例
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := Person{Name: "Asmitha", Age: 25} b, err := json.Marshal(p) if err != nil { fmt.Println("error:", err) } fmt.Println(string(b)) }
輸出
{"name":"Asmitha","age":25}
使用 GoLang 解碼 JSON
使用“json.Unmarshal”函式,我們可以將 JSON 資料轉換為 GoLang 格式。此函式需要一個指向我們想要對映 JSON 物件的結構體的指標,以及一個包含 JSON 資料的位元組切片。
例如,考慮一個表示名為“Person”的實體的 JSON 字串。
jsonStr := `{"name":"Asmitha","age":25}`
要將此 JSON 字串解碼為“Person”結構體,我們可以使用以下程式碼:
示例
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { var p Person jsonStr := `{"name":"Asmitha", "age":25}` err := json.Unmarshal([]byte(jsonStr), &p) if err != nil { fmt.Println("error:", err) } fmt.Println(p.Name, p.Age) }
輸出
Asmitha 25
處理 JSON 陣列
JSON 中的陣列是一組有序的值。在 GoLang 中,可以使用切片來表示 JSON 陣列。
例如,讓我們使用一個 JSON 數字陣列。
jsonStr := `[1, 2, 3, 4, 5]`
要將此 JSON 陣列解碼為整數切片,我們可以使用以下程式碼:
示例
package main import ( "encoding/json" "fmt" ) func main() { jsonStr := "[1, 2, 3, 4, 5]" var numbers []int err := json.Unmarshal([]byte(jsonStr), &numbers) if err != nil { fmt.Println("error:", err) } fmt.Println(numbers) }
輸出
[1 2 3 4 5]
結論
JSON 是一種流行的資料交換格式,GoLang 提供了一種簡單有效的方法來處理 JSON 資料。在本文中,我們介紹了使用 GoLang 編碼和解碼 JSON 資料以及如何處理 JSON 陣列的基礎知識。掌握這些知識將使您能夠輕鬆地將 JSON 整合到您的 GoLang 應用程式中並進行通訊。