iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0

平時在開發程式時,數據序列化反序列化是非常重要的過程。應用程式能夠將內存中的數據轉換為可存儲傳輸的格式,例如JSON以及將來自外部源的數據轉換為應用程序能夠理解的內存結構。Golang 處理JSON數據非常容易。今天將介紹如何在Golang中處理JSON數據的序列化反序列化過程。

什麼是JSON

JSON 又叫作 JavaScript Object Notation 是一種數據交換格式,使用易於理解的文本表示數據結構。JSON是通用的,並且用於數據存儲、配置文件、API通信等多個領域。JSON數據由鍵值對組成,其中鍵是字符串,值可以是數字、字符串、布林值、對象、數組或null。在Golang中,我們可以使用標準庫中的工具來處理JSON數據。

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反序列化是將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數據結構。


上一篇
28 | 以下三點回復:
下一篇
30 | 最後的最後
系列文
Go 語言學習手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言