亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第16天 go語言json數據

標簽:
Go

课程名称GO开发工程师

课程章节:8-2: json数据格式的处理;8-3第三方API数据格式的解析技巧

课程讲师ccmouse

课程内容
1.序列化

// 序列化
func marshal() {
	o := Order{
		ID:         "1234",
		Quantity:   3,
		TotalPrice: 30,
		Item: []OrderItem{
			{
				ID:    "item_1",
				Name:  "learn go",
				Price: 10,
			},
			{
				ID:    "item_2",
				Name:  "interview",
				Price: 5,
			},
		},
	}
	b, err := json.Marshal(o)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%s\n\n", b)
}
  1. 反序列化
// 反序列化
func unmarshal() {
	s := `{"id":"1234","Item":[{"id":"item_1","name":"learn go","price":10},{"id":"item_2"
,"name":"interview","price":5}],"quantity":3,"totalPrice":30}
`
	var o Order
	err := json.Unmarshal([]byte(s), &o) // 将序列化的值传给o
	if err != nil {
		panic(err)
	}
	fmt.Printf("%+v\n", o)
}
  1. 第三方json解析技巧
func parseNLP() {
	res := `{
  "data": [
    {
      "synonym": "",
      "weight": "0.6",
      "word": "真丝",
      "tag": "材质"
    },
    {
      "synonym": "",
      "weight": "0.8",
      "word": "韩都衣舍",
      "tag": "品牌"
    },
    {
      "synonym": "连身裙,联衣裙",
      "weight": "1.0",
      "word": "连衣裙",
      "tag": "品类"
    }
  ]
}`
	//方式一:使用map定义json结构
	// json 的key是string,值是不定的(string、int、struct...)
	m := make(map[string]interface{})
	err := json.Unmarshal([]byte(res), &m)
	if err != nil {
		panic(err)
	}
	//fmt.Printf("%+v\n", m)
	// 使用 type assertion 告知类型,取值不方便
	fmt.Printf("%+v\n", m["data"].([]interface{})[2].(map[string]interface{})["synonym"])

	//	方式二: 使用结构体定义
	m2 := struct {
		Data []struct {
			Synonym string `json:"synonym"`
		} `json:"data"` // 注意要加上data的tag
	}{}
	err2 := json.Unmarshal([]byte(res), &m2)
	if err2 != nil {
		panic(err2)
	}
	fmt.Printf("%+v\n", m2.Data[2].Synonym)

}

课程收获

  • 遵循通用json传输格式,给struct加tag,表示json的key
  • 在取值时使用struct定义json结构比map更便捷
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消