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

网站开发协议中的注意事项网站开发主流方法

网站开发协议中的注意事项,网站开发主流方法,网站举报电话是多少,网站网址没有被百度收录目录 前言 解析到结构体 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.w-s-a.com/news/717563/

相关文章:

  • 建立门户网站张店易宝网站建设
  • wordpress中英文站点厦门seo顾问屈兴东
  • 邯郸网站建设项目重庆网站备案系统
  • 网站导航容易做黄冈网站建设报价
  • 美橙互联建站网站被截止徐州网站建站
  • 网站班级文化建设视频深圳企业网页设计公司
  • 钦州网站建设公司做宣传网站买什么云服务器
  • 58同城有做网站wordpress怎么改标题和meta
  • 安通建设有限公司网站东莞地铁app
  • 群晖nas做网站滨州教育平台 网站建设
  • 住房城市乡建设部网站装修平台有哪些
  • 小米网站 用什么做的深圳广告公司前十强
  • 勤哲网站开发视频瑞安 网站建设培训
  • 有个蓝色章鱼做标志的网站高端的网站建设怎么做
  • 建站网址导航hao123html网页设计实验总结
  • 西宁市网站建设价格丽水集团网站建设
  • 长宁怎么做网站优化好本机怎么放自己做的网站
  • 诚信网站备案中心网站字体怎么设置
  • 企业网站建设费是无形资产吗佛山网站建设哪个好点
  • 网站建设就业方向国开行网站毕业申请怎么做
  • 创建一个网站的费用wordpress 4.0 安装
  • 会员登录系统网站建设dw软件是做什么用的
  • 手机网站被做跳转长沙网上购物超市
  • 网站建设中网站需求分析设计网站推荐html代码
  • 容易收录的网站台州汇客网站建设
  • 企业网站源码百度网盘下载网站备案号如何查询密码
  • 个人网站建设课程宣传栏制作效果图
  • 自己做的网站能上传吗网上做彩票网站排名
  • 教育培训网站模板下载自己做商务网站有什么利弊
  • 平面设计公司网站兰州室内设计公司排名