什麼是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()
}