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

局机关门户网站建设自查报告范文搭建服务器做网站

局机关门户网站建设自查报告范文,搭建服务器做网站,青岛网站建设方案公司,wordpress的文章在哪目录 前言 解析到结构体 json数据与struct字段是如何相匹配的呢#xff1f; 解析到interface Go类型和JSON类型 实例代码 simpleJson 总结 资料获取方法 前言 上一次我们一起学习了如何解析接口返回的XML数据#xff0c;这一次我们一起来学习JSON的解析方法。 JSO…目录 前言 解析到结构体 json数据与struct字段是如何相匹配的呢 解析到interface Go类型和JSON类型 实例代码 simpleJson 总结 资料获取方法 前言 上一次我们一起学习了如何解析接口返回的XML数据这一次我们一起来学习JSON的解析方法。 JSONJavascript Object Notation是一种轻量级的数据交换语言以文字为基础具有自我描述性且易于让人阅读。XML是一个完整的标记语言而JSON不是。JSON比XML更小、更快更易解析因此其被广泛应用于网络数据传输领域。 Go语言的标准库已经非常好的支持了JSON可以很容易的对JSON数据进行编、解码的工作。下面我们通过一些实例一起来学习。 首先我们假设我们的接口返回的JSON数据如下 { code: 00,message: SUCCESS,describe: 成功,resultInfo: { uniqueNumber: 201808161133401673324075025000035 } }解析到结构体 这种方式与xml解析的方法基本没有什么区别我们首先要定义一个结构体然后调用json.Unmarshal把数据解析到结构体 func StructMethod() {resp : {code: 00,message: SUCCESS,describe: 成功,resultInfo: { uniqueNumber: 201808161133401673324075025000035 } }type JsonResp struct {Code int json:codeMessage string json:messageDescribe string json:describeResultInfo map[string]string json:resultInfo}var smsresp JsonResptemp : []byte(resp)errs : json.Unmarshal(temp, smsresp)if errs ! nil {return}fmt.Println(smsresp.Code)fmt.Println(smsresp.Describe)fmt.Println(smsresp.Message)fmt.Println(smsresp.ResultInfo[uniqueNumber]) }json数据与struct字段是如何相匹配的呢 可能有的小伙伴和我一样好奇在解析的时候json数据与struct字段是如何相匹配的呢例如JSON的key是code那么怎么找对应的字段呢 首先查找tag含有code的可导出的struct字段(首字母大写)其次查找字段名是code的导出字段最后查找类似Code或者COde这样的除了首字母之外其他大小写不敏感的导出字段 注意 能够被赋值的字段必须是可导出字段(即首字母大写。同时JSON解析的时候只会解析能找得到的字段找不到的字段会被忽略。我们在实际使用的过程中一定要随时警惕这一点。 其实与这个潜在的坑相比它的优势非常明显当你接收到一个很大的JSON数据结构而你却只想获取其中的部分数据的时候你只需将你想要的数据对应的字段名大写即可轻松解决。 解析到interface 上面那种解析方式是在我们知晓被解析的JSON数据的结构的前提下采取的方案如果我们不知道被解析的数据的格式又应该如何来解析呢 Go类型和JSON类型 我们知道interface{}可以用来存储任意数据类型的对象这种数据结构正好用于存储解析的未知结构的json数据的结果。JSON包中采用map[string]interface{}和[]interface{}结构来存储任意的JSON对象和数组。Go类型和JSON类型的对应关系如下 类型JSON类型boolJSON booleans,float64JSON numbers,stringJSON strings,nilJSON null. 实例代码 // InterfaceMethod 方式 func InterfaceMethod() {resp : {code: 00,message: SUCCESS,describe: 成功,resultInfo: {uniqueNumber: 201808161133401673324075025000035} }var x interface{}_ json.Unmarshal([]byte(resp), x)m : x.(map[string]interface{})for k, v : range m {switch vv : v.(type) {case string:fmt.Println(k, is string, vv)case int:fmt.Println(k, is int, vv)case float64:fmt.Println(k, is float64, vv)case []interface{}:fmt.Println(k, is an array:)for i, u : range vv {fmt.Println(i, u)}case map[string]interface{}:fmt.Println(k, is an map[string]string:)for i, u : range vv {fmt.Println(i, u)}default:fmt.Println(k, is of a type didnt handle)}} }simpleJson 上面两种方式其实已经能应付我们一般的工作了但是单纯就解析数据而言这里先买个关子其实还有一种更简单的方式那就是第三方库github.com/bitly/go-simplejson使用方法如下 func SimplejsonMethod() {resp : {code: 00,message: SUCCESS,describe: 成功,resultInfo: { uniqueNumber: 201808161133401673324075025000035 } }js, errs : NewJson([]byte(resp))if errs ! nil {return}discount : js.Get(resultInfo).Get(uniqueNumber)strcode, _ : js.Get(code).String()intcode, _ : js.Get(code).Int()path : js.GetPath(resultInfo, uniqueNumber)fmt.Println(discount)fmt.Println(strcode)fmt.Println(intcode)fmt.Println(path) }运行输出 bingoMac unpackData$ go run JSONparse.go {201808161133401673324075025000035} 00 0 {201808161133401673324075025000035}GetPath方法是Get的人精简版使用结尾调用的方法可以吧输出的结果转化为指定的类型string 00 转换为 0 。 那么多个方法的调用怎么完成数据传递的呢输出结果的符号其实已经暴露了它的身份对就是指针这个库每个方法接收和返回的都是指针数据。 总结 json 解析 到structinterface{}与type assert的配合使用simplejson学习一门语言是一个慢慢熟悉的过程初始是不易使用完成度太高的轮子 资料获取方法 【留言777】 各位想获取源码等教程资料的朋友请点赞 评论 收藏三连 三连之后我会在评论区挨个私信发给你们~
http://www.zqtcl.cn/news/79450/

相关文章:

  • 盐城集团网站建设免费主题大全软件下载
  • 网站系统分析购物网站制作费用
  • 自定义网站建设团队深圳高端设计公司
  • 长春平面网站建设谷歌做网站
  • 微信网站开发报价表wordpress 干扰码插件
  • 网站服务器建设方案微信公众号小说代理和网站结合怎么做
  • 免费注册网站软件淮北哪里做网站
  • 浙江省住房建设局网站首页一个人免费观看在线高清国语
  • 知识产权教育网站建设方案网站建设流程行情
  • 佛山新网站建设哪家好图书馆网站建设需求分许
  • 社区微网站建设方案苏州建设招投标网站
  • 唐山专业做网站wordpress 多人博客
  • 人才网站开发文档wordpress插件微信
  • 网站建设栏目结构表新闻资讯网站模板
  • 网站制作公司站建设招生网站建设的意义
  • 太原网站建设外包价格曹县建设厅网站
  • 网站公众号小程序开发公司创新的营销型网站
  • 网站快排是怎么做的网站名字备案流程
  • 网站权重有什么用带做网站价位
  • 有哪些文本封面做的好的网站网站推广目标计划
  • 广州的网站建设公司工作服
  • 合肥网站制作费用网站后台制作步骤
  • 演讲网站开发背景宁夏建设工程交易中心网站
  • 肥城网站制作制作音乐app
  • 网站icp备案是什么青岛seo外包公司
  • 长治网站制作哪家好编程c++网课哪家好
  • 功能点计算方法 网站开发开发棋牌游戏软件需要多少钱
  • 专做蓝领的网站网站建设合同服务事项
  • 长春百度网站快速优化网站源码分享平台
  • 嘉兴网站关键词排名站长之家查询工具