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

河北公司网站建设效果企业画册印刷

河北公司网站建设效果,企业画册印刷,seo 网站title,c语言软件开发和网站开发区别目录 前言 解析到结构体 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.hkea.cn/news/14438325/

相关文章:

  • 手机最全的网站珠海seo海网站建设
  • 发稿平台seo搜索优化怎么做
  • 织梦做的网站打包在dw修改邯郸市住房和城乡建设网站
  • 中国电力建设集团股份有限公司网站个人如何注册微信公众号怎么创建
  • 北京网站建设备案矢量网站动画怎么做
  • 个体户 建设网站网站代理加盟赚钱吗
  • 怎么做简单的网站首页品牌logo图片设计制作
  • 吴中区做网站linux运维是必死之路
  • 如何快速更新网站快照免费建建网站
  • 做企业网站排名优化要多少钱襄阳电商网站建设
  • 挂机宝做网站站酷网官网进入
  • 网站建设丶金手指下拉13服务质量好的外贸营销系统
  • 网站备案名称规定wordpress后台登陆模板
  • 网站建设完提交百度建设银行福州分行招聘网站
  • 2017wordpress整站源码网站用视频做背景音乐
  • wordpress站点标题是什么建设网站花多少钱
  • 青海网站建设优化wordpress.org 建站
  • 网站建设 长摊 无形资产宣城网站建设费用
  • 服务器网站建设维护网站没备案或与实际备案不符
  • 佛山做外贸网站特色网站技术支持 新锐网络
  • 汕头网站设计定制长沙需要做网站的企业
  • 绵阳做seo网站公司大连市英文网站建设
  • 巴音郭楞库尔勒网站建设大丰网站建设找哪家好
  • 建设企业网站可信度西北旅游攻略
  • 展示型网站重点烟台网站建设询问企汇互联专业
  • 网站营销目标敦化建设局网站
  • layui做移动网站网站解决方案
  • 电商网站构建网站开发需要逻辑吗
  • 成都学校网站制作营销型网站建设怎么做
  • 点击即玩的小游戏网站百度的总部在哪里