golang编程语言通过json文件生成struct及解析处理过程

本文地址:http://peihexian.iteye.com/blog/2429135

项目里面需要爬虫去爬高德地图,高德地图的返回json结果里面有时候字段对应值是字符串,有时候对应结果是[]一对中括号,代表结果为空,使用golang自带的json解析工具折腾半天,最后一查资料据说是性能最差的,说某东用的是easyjson去解析处理json文件,大概记录一下处理过程及遇到的坑。

 

1.easyjson的使用

   easyjson提供了一个命令行的工具,可以根据.go源码内的struct自动生成一个代理调用类文件,大概使用过程是先

go get -u github.com/mailru/easyjson

把它下载回来,然后

go install  github.com/mailru/easyjson/easyjson

自动编译安装到%GOPATH%\bin目录下面,需要生成代理代码需要你的项目里面有与json对应的struct,这个见下面的处理过程。

 

2.高德地图官方有在线的调试工具,可以根据参数返回json格式的查询结果,拿到结果以后我最初是手敲代码挨个去对应json文件字段的,其实有全自动的方法,就是访问https://mholt.github.io/json-to-go/ 这个网址,把json文件复制进去,自动就生成好了golang的struct,复制到项目里面,运行easyjson的自动生成代码命令生成项目内的代理代码:

easyjson -all models.go 

以上我是把网站里面生成的代码保存为我本机的models.go里面了,自动生成的文件叫做models_easyjson.go,这里面有序列号反序列化的代码。

 

3.第二步生成的代码去接收高德地图返回的json结果还是有些问题,就是个别字段有值的时候是字符串,没有值的时候是空[]结果的情况,解决办法是把原来的

Tel      []interface{}   `json:"tel"`

改为

Tel      interface{}   `json:"tel"`

就好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值