Golang复杂json结构体解析

1、示例一

{
"id":"8667597b-bcd9-51de31b655cd", "name":"ali-redis-analyse", "category":"db", "category_display":"数据库", "type":"redis", "type_display":"Redis", "attrs":{
  "a":"dklasglkaslkd",
  "b":"daskjlgasjl;d"
}, "date_created":"2022/10/11 11:48:06 +0800", "date_updated":"2022/10/11 14:09:17 +0800", "created_by":"istrator", "comment":"r-0xi2", "domain":"6dea0b4b-88eb-3d65e5558cab", "org_id":"00000000-0000-0000", "org_name":"Default"
}

如果josn对象很复杂的话,结构体写起来也是很麻烦的。但有了这个神器之后就不怕写结构体了,效果如下图

https://mholt.github.io/json-to-go/

示例代码:

type AutoGenerated struct {
	ID              string `json:"id"`
	Name            string `json:"name"`
	Category        string `json:"category"`
	CategoryDisplay string `json:"category_display"`
	Type            string `json:"type"`
	TypeDisplay     string `json:"type_display"`
	Attrs           struct {
		A string `json:"a"`
		B string `json:"b"`
	} `json:"attrs"`
	DateCreated string `json:"date_created"`
	DateUpdated string `json:"date_updated"`
	CreatedBy   string `json:"created_by"`
	Comment     string `json:"comment"`
	Domain      string `json:"domain"`
	OrgID       string `json:"org_id"`
	OrgName     string `json:"org_name"`
}

func main() {
	var data AutoGenerated
	var s = `{"id":"8667597b-bcd9-51de31b655cd","name":"ali-redis-analyse",
		"category":"db","category_display":"数据库","type":"redis","type_display":"Redis","attrs":{"a":"dajkjfka","b":"djaskj"},
		"date_created":"2022/10/11 11:48:06 +0800","date_updated":"2022/10/11 14:09:17 +0800",
		"created_by":"istrator","comment":"r-0x",
		"domain":"6dea0b4b-88eb-3d65e5558cab","org_id":"00000000-0000-0000-0000","org_name":"Default"}`
	err := json.Unmarshal([]byte(s),&data)
	if err != nil{
		fmt.Println(err)
		return
	}
	fmt.Println(data)
	fmt.Println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
	fmt.Println(data.Attrs.A)
}

 结果所示:

 转载请备注原文链接!!! 

 

posted @ 2022-10-13 15:51  Biuget-Golang  阅读(182)  评论(0编辑  收藏  举报