当前位置: 首页 > news >正文

优酷网站怎么做的北京seo设计公司

优酷网站怎么做的,北京seo设计公司,做网做网站建设的网站,怎么在百度自己创网站目录 解析接口返回数据 定义结构体 解析函数: 测试 优化 资料获取方法 上一篇我们学习了怎么发送各种数据类型的http请求,这一篇我们来介绍怎么来解析接口返回的XML的数据。 解析接口返回数据 定义结构体 假设我们现在有一个接口返回的数据resp如…

目录

解析接口返回数据

定义结构体

解析函数:

测试

优化

资料获取方法


上一篇我们学习了怎么发送各种数据类型的http请求,这一篇我们来介绍怎么来解析接口返回的XML的数据。

解析接口返回数据

定义结构体

假设我们现在有一个接口返回的数据resp如下:

<?xml version="1.0" encoding="utf-8"?>
<ResponseWithResponseInfo><code>00</code><message>SUCCESS</message><describe>成功</describe><resultInfo><uniqueNumber>201808161133401673324075025000035</uniqueNumber></resultInfo>
</ResponseWithResponseInfo>

要解析这个数据,首先我们要定义一个与之树状结构一致的结构体:

type XMLresp struct {ResponseWithResponseInfo xml.Name `xml:"ResponseWithResponseInfo"`Code                        int      `xml:"code"`Message                     string   `xml:"message"`Describe                    string   `xml:"describe"`ResultInfo                  struct {XMLName      xml.Name `xml:"resultInfo"`UniqueNumber string   `xml:"uniqueNumber"`}
}

这里要注意xml.Name 这个tag,它表示后面的数据的父元素是什么,如果没有填写这个信息,在数据解析的时候可能会获取不到数据。

解析函数:

接下来我们就可以使用xml.Unmarshal方法将字符串中的数据解析出来了:

// XMLUnpack xml数据解析
func XMLUnpack(respbody string) (Prase []interface{}, errs error) {temp := []byte(respbody)v := XMLresp{}errs = xml.Unmarshal(temp, &v)Prase = []interface{}{v.Code, v.Message, v.Describe, v.ResultInfo.UniqueNumber}if errs != nil {return}return
}

测试

func main() {data, _ := XMLUnpack(resp)fmt.Println(data)
}

输出:

bingo@Mac unpackData$ go run paraseXML.go
[0 SUCCESS 成功 201808161133401673324075025000035]

优化

大家可能注意到了,我们在定义XMLUnpack这个函数的时候用于解析这个数据的结构体是固定的,也就是说这个函数只能解析同一个树桩结构的数据,每一个不同的接口我们都需要写一个与之对应的函数。这样我们可能会在后续面临一个问题,如果我们的接口多了,取怎样的函数名可能都会是困扰我们的一个大问题,而且会变得越来越不容易维护。

那么有没有办法能解决这个问题呢,答案当然是有的,下面我们一起来解决这个问题。

不知道大家还记不记得我么之前一起学习过的method语法,它的优点是可以让不同作用的函数使用同一个函数名称(属性),可以完成面向对象语言特有的继承和重写操作,如果忘记了可以看看我之前发布的学习笔记。

我们这次的优化其实就是method语法的一次实际应用,下面让我们来看一下具体的实现。

// XMLUnpack 短信网关xml返回结果解析
func (smsresp *XMLresp) XMLUnpack(respbody string) (Prase []interface{}, errs error) {temp := []byte(respbody)v := SmsXMLresp{}errs = xml.Unmarshal(temp, &v)Prase = []interface{}{v.Code, v.Message, v.Describe, v.ResultInfo.UniqueNumber}if errs != nil {return}return
}

现在的这个函数和之前的区别就在于我们指定了可以调用这个函数的数据类型为*XMLresp,只有这个类型的数据能够调用这个方法,同样的我们的调用方法也发生了一些小改变:我们需要先定义一个存储这个结构体的变量,然后再调用这个变量的方法,当然,这个变量在后续解析其他相同类型的数据时是可以无限次复用的。参考代码:

func main() {var p XMLrespdata, _ := p.XMLUnpack(resp)fmt.Println(data)
}

文中可能存在描述不正确,欢迎大神们指正补充!


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

http://www.ds6.com.cn/news/3941.html

相关文章:

  • 婚纱网站建设需求分析seo管理系统培训
  • 企业做网站首页关键词排名代发
  • 论述简述网站制作的步骤谷歌推广怎么做最有效
  • wordpress快速登陆插件seo 工具推荐
  • 专业微网站建设公司首选公司零基础学什么技术好
  • 建立网站站点的过程windows优化大师官方下载
  • 什么网站资源多emlog友情链接代码
  • 网站旁边的小图标怎么做的昆明seo关键词
  • 烟台做网站工资项目优化seo
  • 宝鸡品牌网站建设长沙关键词优化公司电话
  • 一个网站怎么做多条线路谷歌sem和seo区别
  • 网站开发的app网站关键词如何快速上首页
  • 最好的小型 网站开发系统百度答主招募入口官网
  • 西安市房和城乡建设委员会网站百度网址链接是多少
  • 阿里巴巴网站怎么做推广方案手机cpu性能增强软件
  • 沈阳男科医院免费在线咨询哈尔滨百度搜索排名优化
  • 走出趣网站怎么做今日重庆重要消息
  • 网站开发实训心得800国外友链买卖平台
  • 专业定制网咖装修效果图网站性能优化方法
  • 我要自学网python怎么做优化关键词
  • o2o网站开发怎样建立网站平台
  • 画中画有哪些网站可以做网络营销知名企业
  • 长春做网站公司西安网络推广优化培训
  • 网站建设提供空间什么意思seo策划
  • 修复wordpress网站关键词优化培训
  • 室内设计考研北京网站快速排名优化
  • 网站设计原理新闻发稿平台有哪些?
  • wordpress 功能插件seo网站诊断文档案例
  • wap新闻网站源码百度推广退款电话
  • 2017网站建设前景百度推广助手下载