JSON在後端和前端的世界中是一個常見的資料格式,它是一種輕量級的數據交換格式,易於人類閱讀和編寫,同時也易於機器解析和生成。在Golang中,我們可以使用標準庫中的"encoding/json"包來輕鬆處理JSON。以下就來Show you codes
首先,讓我們認識一下JSON數據的基本結構。一個JSON 由一組鍵值對組成,鍵和值之間使用冒號分隔,不同鍵值對之間使用逗號分隔。例如:
{
"name": "jimmy",
"age": 29
}
我們可以將這個JSON對象保存在一個名為example.json的文件中,以便後續我們繼續撰寫我們的程式碼。
接下來,我們將展示如何在Golang中讀取這個JSON,並將其轉換到一個Go結構體中。首先,我們定義了一個名為User的Struct,Struct與JSON對象的鍵值對相對應,我們使用json標籤來定義這映射關係。然後,我們使用os.Open函數打開example.json文件,並使用ioutil.ReadAll函數讀取文件的內容。最後,我們使用json.Unmarshal函數將JSON數據解碼到User結構體中,並輸出用戶的姓名和年齡。
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonData, err := os.Open("./example.json")
if err != nil {
fmt.Println(err)
}
defer jsonData.Close()
byteData, _ := ioutil.ReadAll(jsonData)
var u User
json.Unmarshal(byteData, &u)
fmt.Printf("User: %s, and Age: %d\n", u.Name, u.Age)
}
接下來,我們將展示如何將一個Go對象生成為JSON數據。在這個示例中,我們創建了一個名為User的Struct,並一樣給了姓名和年齡的值與關係。然後,我們使用json.MarshalIndent(或者 json.Marshal)函數將User Struct 編碼為JSON數據,並將其保存在一個名為example.json的文件中:
package main
import (
"encoding/json"
"fmt"
"os"
)
type User struct {
Name string
Age int
}
func main() {
var u User
u = User{Name: "Jimmy", Age: 29}
byteData, err := json.MarshalIndent(u, "", " ") // or json.Marshal(u)
if err != nil {
fmt.Println("json err")
}
jsonFile, err := os.Create("./example.json")
if err != nil {
fmt.Println("create json file error")
}
size, err := jsonFile.Write(byteData)
if err != nil {
fmt.Println("write file error")
}
defer jsonFile.Close()
fmt.Printf("file Wrote %d bytes\n", size)
}