Go语言学习#11-如何解析json字符串

=Start=

缘由:

现在的json格式用的非常之多,比如:配置文件,接口之间的数据传递。所以,用Go 语言来对json字符串进行读取、解析、在各类型之间进行转换是一个非常常见的问题,这里简单整理总结一下,方便以后用到的时候参考。

正文:

参考解答:

Go 语言在内置的”encoding/json”库中提供了Marshal和Unmarshal函数以支持(已知结构的)struct结构体和json字符串之间的转换:

1、将固定格式的json字符串转换成struct结构体

来一个实际点的例子就是:通过接口 http://ipinfo.io/json 获取自己网络出口公网IP地址的相关信息如下:

然后你想从上面这段json字符串中解析出IP地址和地区region出来,因为返回内容的格式都是固定的,所以我们可以先对着内容定义一个结构体IpInfo出来,借助Unmarshal函数将json字符串解析到一个IpInfo结构体变量中,然后进行下一步的处理:

2.将struct结构体变量转换成json字符串的形式

这里列出两个方法:

  • json.NewEncoder(b).Encode(struct_var)
  • b2, err := json.Marshal(struct_var)

3.嵌套json字符串的解析

上面2种讲的其实都是格式比较简单的json字符串的处理,但实际场景中可能嵌套格式的json字符串会占多数,比如:

针对这种较为复杂的嵌套格式json字符串的处理,方法简单的来说有3种:

  • 一、先定义好(对应格式)嵌套结构的struct结构体;
  • 二、先使用 interface{} 接收,实际使用的时候再处理一遍;
  • 三、直接使用外部包,比如:gjson或者fastjson

这里为了演示方便起见,先用gjson试试,其中nested.json文件的内容是上面的那段json字符串。

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4151.html

《Go语言学习#11-如何解析json字符串》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注