golang json解析初探

什麼是json

打開維基百科,json是這樣定義的:

JSON(JavaScript Object Notation,JavaScript物件表示法,讀作/ˈdʒeɪsən/)是一種由道格拉斯·克羅克福特構想和設計、輕量級的資料交換語言,該語言以易於讓人閱讀的文字為基礎,用來傳輸由屬性值或者序列性的值組成的數據對象。儘管JSON是JavaScript的一個子集,但JSON是獨立於語言的文本格式,並且採用了類似於C語言家族的一些習慣。

從概念上,我們可以得知:

  • json是一種數據交換語言
  • 以key/value表現形式

下面學習下golang 怎麼做json 序列化和反序列化操作,主要用到encoding包下的子包json

golang 序列化操作

package main
import (
	"encoding/json"
	"fmt"
)
// 定義一個Student 結構體類型
type Student struct {
	Name string
	Age int8
	Id int64
}

func serialStruct() {
	// 聲明一個結構體變量stu
	stu := Student{
		Name: "dog500",
		Age: 25,
		Id: 110010,
	}
	data, err := json.Marshal(stu)
	if err != nil {
		fmt.Println("序列化結構體變量失敗: ", err)
	}
	fmt.Printf("stu json 序列號後的 = %v\n", string(data))
}

// map 類型序列化
func serialMap() {
	var myMap map[string]interface{}
	myMap = make(map[string]interface{})
	myMap["愛好"] = "睡覺、看電影、讀書"
	myMap["理想"] = "我的未來不是夢~"
	myMap["工作"] = "IT 工人"
	myMap["計劃"] = "口中有糧, 心中不慌"
	// 序列化下
	data, err := json.Marshal(myMap)
	if err != nil {
		fmt.Println("序列化map變量失敗: ", err)
	}
	fmt.Printf("myMap json 序列號後的 = %v\n", string(data)
}
func main() {
	// 測試下 結構體 類型序列號
	serialStruct()
	serialMap()
}

golang 反序列化操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章