当前位置: 首页 > 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.hkea.cn/news/14544879/

相关文章:

  • 网站设计开发文档模板下载医疗器械类网站前置审批
  • 南京企业做网站悦阁网站建设
  • 用ps做网站网页ico在线制作网站
  • 网站公司建设 中山课程设计模板
  • 使用帝国做软件下载网站源码动态图网站怎么做dw
  • 建设项目自主验收验收网站wordpress 主题 字体
  • 怎么样给自己做网站新闻发布会名词解释
  • 临西网站建设费用免费外贸网站源码
  • 商业网站的创建程序网站宣传页
  • 彩票网站net网站开发怎么进入微信公众号平台
  • 网站建设图片教程创建网站成功案例
  • ps做网站浏览器预览哈尔滨网站制作哪家好薇
  • 17素材网站赣州市铁路建设办公室网站
  • 百度短网址生成石家庄百度提升优化
  • 早教网站设计中老年适合在哪个网站做直播
  • 东坑东莞网站建设外网加速
  • 无锡网站建设 微信微信公众号怎么创建优惠券
  • 做门户网站开发的技术用flash做网站
  • 举报网站建设情况总结多用户商城网站
  • 做纸箱在什么网站找客户郑州便宜网站建设公司
  • 用php做的网站有哪些wordpress手机主题mip
  • 做网站的技术路线手机网站外链怎么
  • 军用棉被门网站建设湖北网站建设贴吧
  • 镇江市网站开发公司集美建设局中心网站
  • 类似于微博网站怎么做网上免费logo设计
  • 好的网站建设商家市场推广计划
  • 张家界市网站建设设计怎么免费建立网店网站
  • 如何分析竞争对手网站怎么样注册公司流程和费用
  • 如何快速搭建网站网站备案 信息查询
  • 软文网站有哪些上海华东建设发展设计有限公司网站