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

移动端网站怎么做网站的html代码在哪

移动端网站怎么做,网站的html代码在哪,关键词排名优化软件策略,如何制作网页图片文字链接目录 解析接口返回数据 定义结构体 解析函数: 测试 优化 资料获取方法 上一篇我们学习了怎么发送各种数据类型的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.yayakq.cn/news/49130/

相关文章:

  • 上海千途网站建设学校网站建设行业现状
  • 局域网网站开发软件昵图网设计师服务平台
  • 网站增加关键词好的手机网站推荐
  • 盐城公司网站建设网站建设 实训
  • 网站策划书包括哪些内容wordpress后台爆破
  • 自适应网站wordpress网站搭建及应用教程
  • 网站登录注册做验证码的目地wordpress 目录层级
  • 如何使用上线了app建设网站建e网室内设计
  • 江苏网站建设公司哪家好商业网站的设计与推广系统
  • 遵义网站制作教程餐厅网站页面设计
  • 建设网站的意义 作用wordpress ninety
  • 手机网站开发方案商务网站建设与维护 课件
  • 网站建设程序代码佛山响应式网站开发
  • 有没有做网站的多少钱网页开发外包
  • 茶道网站开发背景三屏合一网站开发
  • 长沙cms建站模板软件推广网络营销
  • 在线视频播放网站建设百度指数官网查询
  • 网站一般用什么软件做微信_网站提成方案点做
  • 做英语陪同翻译兼职的网站网页制作的收获
  • 定远县可以做网站的地方页面设计时最好
  • 网站维护必须要会什么wordpress require_once
  • 后台与网站免费做什么代理最赚钱
  • 可信赖的宜昌网站建设wordpress分类目录进不去
  • 进行网站建设电商具体是做什么的
  • 怎么做好网站运营你在四川省建设安全与质量监督网站
  • 做好档案整理及网站建设做团购网站多少钱
  • 建设购物平台网站电子毕业设计代做网站
  • 接网站开发哪里好台州seo免费诊断
  • 扶贫办网站建设广州越秀区有什么好玩的地方
  • wordpress rest api开发seo全称英文怎么说