Golang解析json的几种方法
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来操作
Golang解析json的几种方法的更多相关文章
- 解析JSON的两种方法eval()和JSON.parse()
解析JSON 一种方法是使用eval函数. var dataObj = eval("("+json+")"); 必须把文本包围在括号中,这样才能避免语法错误,迫 ...
- Ajax中解析Json的两种方法详解
eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name&qu ...
- Ajax中解析Json的两种方法
eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name" ...
- 在jsp页面解析json的2种方法
方法1: $(function() { $("#btn").click(function() { $.ajax({ url : "fastjson.do", s ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- 解析XML的几种方法之SAX解析
假期总结不能停,坚持坚持....接下来总结一下XMl和json的解析和生成.. 解析XML的四种方法,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址: DOM:在现 ...
- 问题:c# json解析;结果:c# 解析JSON的几种办法
c# 解析JSON的几种办法 欲成为海洋大师,必知晓海中每一滴水的真名. 刚开始只是想找一个转换JSON数组的方法,结果在MSDN翻到一大把. 搜索过程中免不了碰到一大堆名词:WCF => Da ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
随机推荐
- RobotFramwork中实现oracle数据库的连接(终于解决cx_oracle问题)
RobotFramework连接数据库有java实现,也有python实现的,现在研究的python实现的,java还没尝试.有兴趣的参考后面的转载文章. 步骤(也转载了别人的文章,因为写的比 ...
- 在Mac上如何运行jar文件
操作一:编译,打包. 操作二: 运行jar文件,提示:jar中没有主清单属性. 解决办法: 使用解压工具解压HelloWorld.jar文件,往MANIFEST.MF中添加Main-Class. 1. ...
- Java基础之枚举
Java基础之枚举 作为1.5才增加的特性,枚举的使用并不是很多. 枚举其实就是一个比较特殊的类,就如同注解其实也是个特殊的接口一样(注解反编译之后没有了@符号).枚举使用enum关键字声明,通过反编 ...
- 【LeetCode】N皇后I
[问题]n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案.每一种解法包含一个明确的 n 皇后问 ...
- oracle学习笔记(3)
使用profile文件对口令进行管理 sql>create profile 文件名 limit failed_login_arrempts 3 password_lock_time 2; 将配之 ...
- POJ 2771 最大点独立集
这是经典的最大点独立集 还是可以转化成最大匹配数,为什么呢,因为求出最大匹配数之和,匹配的边的两个端点互斥,只能去一个,所以最后结果就用总点数-最大匹配数即可 #include <iostrea ...
- Javascript里EQ、NE、GT、LT、GE、LE含义
EQ 就是 EQUAL等于 NE就是 NOT EQUAL不等于 GT 就是 GREATER THAN大于 LT 就是 LESS THAN小于 GE 就是 GREATER THAN OR EQUAL ...
- tensorflow--conv函数
#第一种yolo3中程序 def convolutional(input_data, filters_shape, trainable, name, downsample=False, activat ...
- chan-vese模型
Python--level set (水平集)和 chan-vese模型 2018年08月28日 10:51:54 GlassySky0816 阅读数:1604 版权声明:本文为博主原创文章,未 ...
- 进度1_家庭记账本App
今天完成了昨天的初步构想,详细介绍见上一篇博客,具体项目结构和案例如下: MainActivity.java: package com.example.familybooks; import andr ...