page contents

Golang string转json的一些坑

先带来点冷知识,不知道大家知不知道,反正我刚知道... 大佬们都知道怎么在string中给string类型赋值带双引号的字符串,没错就是用反斜杠,如下: msg := "{\"name\":\"zhangsan\", \"age\"...

attachments-2021-07-r3gV99M860e90f75782d1.png

先带来点冷知识,不知道大家知不知道,反正我刚知道...

大佬们都知道怎么在string中给string类型赋值带双引号的字符串,没错就是用反斜杠,如下:

msg := "{\"name\":\"zhangsan\", \"age\":18, \"id\":122463, \"sid\":122464}"

但是golang还支持另外一个符号,我初学时候以为是单引号,但其实不是,是esc键下边那个,那么赋值带双引号的字符串就如下就行了:

ret := `{"access_token":"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m","expires_in":7200}`

进入正题

先看一段代码,起作用是把字符串转换为结构体对应的json

type people struct {
	name string `json:"name"`
	age  int    `json:"age"`
	id   int    `json:"id"`
}

type student struct {
	people
	id int `json:"sid"`
}

func main() {
	msg := "{\"name\":\"zhangsan\", \"age\":18, \"id\":122463, \"sid\":122464}"
	var someOne student
	if err := json.Unmarshal([]byte(msg), &someOne); err == nil {
		fmt.Println(someOne)
		fmt.Println(someOne.people)
	} else {
		fmt.Println(err)
	}
}

仔细看看,有没有错?我只能说,这样是输出不出来答案的,赋值错误,看下面的运行结果:

attachments-2021-07-mzRzSP6l60e90f8825fda.png

伤脑筋啊,我仔细看了半天,发现在定义的people和student两个结构体下边有绿色的波浪线(我用的vscode),像下边这样:

attachments-2021-07-2P300nDx60e90f97daa4b.png

鼠标放上去显示的是:

attachments-2021-07-wn7zaiSt60e90f9f38363.png

大家都知道,golang中变量声明成大写和小写能引用的范围是不一样的,那我就想了,大小写问题???一脸懵逼把变量名首字母改成了大写,然后...就行了,代码变成了下边这样:

type people struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
	ID   int    `json:"id"`
}

type student struct {
	people
	ID int `json:"sid"`
}

func main() {
	msg := "{\"name\":\"zhangsan\", \"age\":18, \"id\":122463, \"sid\":122464}"
	var someOne student
	if err := json.Unmarshal([]byte(msg), &someOne); err == nil {
		fmt.Println(someOne)
		fmt.Println(someOne.people)
	} else {
		fmt.Println(err)
	}
}

输出的结果这样:

attachments-2021-07-kGQKb5Az60e90f5511380.png

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-8DoAJOfp62ad37a511bb5.jpeg

  • 发表于 2021-07-10 11:11
  • 阅读 ( 497 )
  • 分类:Golang

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1324 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章