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

看wordpress导出文章电脑优化软件哪个好用

看wordpress导出文章,电脑优化软件哪个好用,平面设计网站有什么,织梦网站后台密码忘记了怎么做目录 解析接口返回数据 定义结构体 解析函数: 测试 优化 资料获取方法 上一篇我们学习了怎么发送各种数据类型的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.mmbaike.com/news/75623.html

相关文章:

  • 北京欢迎你网站建设长春网站建设路
  • 自建站服务国外域名注册
  • 百度商城购物厦门seo测试
  • 台州网站建设seo百度自动点击器
  • 电脑做ppt模板下载网站站长工具ip地址
  • 网站ico关键词推广排名软件
  • 沈阳高端网站定制百度网页版
  • 网站建设责任分工南宁做网站公司
  • 丰县网站建设seo免费优化工具
  • 做a视频 免费网站磁力屋 最好用
  • 注册公司需要登录的网址seo公司排名
  • 深圳建站公司推荐成都谷歌seo
  • 宁波正规网站seo公司网络营销策划目的
  • 四川建设网站首页seo提供服务
  • wordpress 安装平台网站优化方案
  • 厦门网站快照优化公司seo自己怎么做
  • 网站流量在哪设置seo每天一贴
  • 微信如何做微商城网站建设关键词看片
  • 网站优化的意义山东建站
  • 开展农业信息网站建设工作总结对百度竞价排名的看法
  • 微商软件批发商城总站独立站seo怎么做
  • wordpress+好用插件合肥关键词优化平台
  • seo是怎么优化上去百度seo优化包含哪几项
  • 启迪网站建设私密浏览器免费版
  • 批量建wordpress重庆seo论
  • 开一个网络公司需要多少钱抖音seo点击软件排名
  • 网站开发人员要求安全优化大师下载
  • 做冻品海鲜比较大的网站有哪些江门网站开发多少钱
  • 一个空间怎么做多个网站今日头条国际军事新闻
  • 重庆推广网站网站推广软件下载安装免费