Golang解析json的几种方法

概要

使用Golang调用其它平台API接口时总会被多层的json串给恶心到,我记录一下自己解析json的几种方法。

一、自带的json包

func JsonUnmarshal(b []byte) {
var s Student
if err := json.Unmarshal(b, &s); err != nil {
log.Println(err)
}
}

二、强制类型装换和反射

func GetItemMap(parent map[string]interface{}, key string) map[string]interface{} {
val, ok := parent[key].(map[string]interface{})
if ok {
return val
} else {
return nil
}
}
func GetItemString(parent map[string]interface{}, key string) string {
val, ok := parent[key].(string)
if ok {
return val
}
return ""
}
我只展示了部分函数,大概的想法都差不多,只需将原有的[]byte转为map[string]interface{}类型,然后使用这些函数即可。

使用mapstructure

func MapStruct(b []byte) {
var s Student
var tmp map[string]interface{} json.Unmarshal(b, &tmp)
err := mapstructure.Decode(tmp, &s)
if err != nil {
fmt.Println(err)
}
}

总结

最常用是二、三两种方式结合使用,将json串中所需要的那一解析出来,然后使用mapsruct来操作

最新文章

  1. InputStream、InputStreamReader和Reader的关系
  2. Java学习-004-传世经典Helloworld
  3. ZooKeeper常见问题(转)
  4. configure错误列表供参考
  5. 3555: [Ctsc2014]企鹅QQ
  6. CSS核心属性
  7. HTML5 CSS3 专题 :诱人的实例 3D旋转木马效果相册
  8. 微信公众平台网页登录授权多次重定向跳转,导致code使用多次问题
  9. core ML学习
  10. python + PyQt5 实现 简易计算器
  11. Node.js、npm、vue-cli 的安装配置环境变量
  12. VSS(Virtual Switching System)
  13. Redis-09.慢查询
  14. C中的malloc/free与C++中的new/delete的用法与区别
  15. python3+selenium入门06-浏览器操作
  16. Python3 timeit的用法
  17. 529. Minesweeper扫雷游戏
  18. 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)
  19. MIRUO面试题
  20. Windows多线程基础

热门文章

  1. vue学习(三)组件传值
  2. CentOS 7 下oracle 11G R2 ADG 搭建
  3. Mysql:分支结构—case结构
  4. 51nod 1287: 加农炮 好题啊好题
  5. tx2系统备份与恢复
  6. Kmeans应用
  7. 颜色设置 <color name="white">#FFFFFF</color><!--白色 -->
  8. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境
  9. js冒泡,阻止冒泡
  10. h5-transform-3d