解析json数据总结
json格式的数据一般就是两种类型的,一种是数组类型的,一种是对象类型的。
数组类型:[{"id":"a001","name":"zhangsan","age":20,"sex":"male","address":"beijing"},{"id":"a002","name":"lisi","age":20,"sex":"female","address":"beijing"}]
对象类型:{"id":"a001","name":"zhangsan","age":20,"sex":"male","address":"beijing"}
第一种方式:使用JsonReader对象来解析数组类型的json数据。 具体实现方式请参考一下代码。
public static List<Student> jsonReaderToJsonParser(String jsonData) {
list = new ArrayList<Student>();
// 使用jsonreader对象解析json数据,使用new 关键字实例化一个JsonReader对象
@SuppressWarnings("resource")
JsonReader jsonReader = new JsonReader(new StringReader(jsonData));
try {
jsonReader.beginArray();// 开始解析数组[{key:value,key:value},{key:value,key:value}]
while (jsonReader.hasNext()) {// 判断是否有下一个数组,如果有,就进入
jsonReader.beginObject();// 开始解析一个json对象{key:value,key:value}
student = new Student();
while (jsonReader.hasNext()) {
String keysName = jsonReader.nextName(); // 获得Key的名称
if (keysName.equals("id")) {
student.setId(jsonReader.nextString());
} else if (keysName.equals("name")) {
student.setName(jsonReader.nextString());
} else if (keysName.equals("sex")) {
student.setSex(jsonReader.nextString());
} else if (keysName.equals("age")) {
student.setAge(Integer.parseInt(jsonReader.nextString()));
} else if (keysName.equals("address")) {
student.setAddress(jsonReader.nextString());
}
}
list.add(student);
jsonReader.endObject(); // 结束json对象的解析
}
jsonReader.endArray(); // 结束数组的解析
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
第二种方式:使用google提供的Gson工具解析对象类型的json数据。具体实现方式请参考一下代码。
// 解析json对象,通过Gson对象的fromJson方法将json对象直接转换成Student实体对象("{\"id\":\"A001\",\"name\":\"zhangsan\",\"sex\":\"male\",\"age\":20,\"address\":\"beijing\"}")
public static List<Student> gsonToJsonParser(String jsonData) {
//实例化一个List数组
list = new ArrayList<Student>();
//创建一个Gson对象
Gson gson = new Gson();
//调用Gson对象的fromJson函数,返回一个Student对象
Student student = gson.fromJson(jsonData, Student.class);
list.add(student);
return list;
}
第三种方式:使用Gson工具解析数组类型的json数据
// 解析json数组,通过使用Gson对象的fromJson方法装载json数据
public static List<Student> parseStudentFromJson(String jsonData) {
list = new LinkedList<Student>();
// 实例化一个Type对象
Type listType = new TypeToken<LinkedList<Student>>() {
}.getType();
// 实例化一个Gson对象
Gson gson = new Gson();
// 通过调用Gson的fromJson函数返回一个List集合的数组
list = gson.fromJson(jsonData, listType);
return list;
}
解析json数据总结的更多相关文章
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- 使用jQuery解析JSON数据
我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. 上例中得到的JSON数据如下,是一个嵌套JSON: {"comments&quo ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- 用jquery解析JSON数据的方法以及字符串转换成json的3种方法
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- fastjson生成和解析json数据,序列化和反序列化数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...
- JSONKit解析json数据
先将第三方文件拖进工程 JSONKit.h和JSONKit.m 然后设置在ARC工程中添加MRC文件,如下图所示 #import "ViewController.h" #impor ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)
在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...
随机推荐
- DP之矩阵连乘问题
最优二叉查找树的一道思考习题 同最优二叉查找树一样,矩阵连乘问题也是一个卡特兰数问题(其动态规划的构造过程都很像) 分析解答: a,铺垫的数学知识首先要搞清楚矩阵相乘是怎么乘的: 1)对于连续的n个矩 ...
- 理解Linux系统中的load average(图文版)转
一.什么是load average? linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount ...
- LOG4NET开源日志dll引用流程,在net3.5中已经实践ok
一,在app.config中配置 <?xml version="1.0"?><configuration> <configSections> & ...
- bing 输入法,切换简体、繁体快捷键与myeclipse 格式化代码冲突。。
bing 输入法,切换简体.繁体快捷键与myeclipse 格式化代码冲突...蛋碎 myeclipse 代码格式化快捷键是:ctrl+shift+F,bing输入法简体.繁体切换也是,于是蛋疼的事情 ...
- 从零开始学JAVA(01)-JAVA开发环境安装
写在前面: 本人没有JAVA基础(包括语法.开发环境),未使用开发工具开发过程序,如果有不对或误导的地方,欢迎指正. 本系列所有文章使用Eclipse,JDK是Version 7 Update 51, ...
- JAVA WEB 作用域之间的区别
JAVA WEB 作用域 1.page属性范围(pageContext) a.在一个页面设置的属性,跳转到其他页面就无法访问了(包括重定向和). 示例:pageScopeDemo01.jsp < ...
- DataGridView显示行号的几种方法来自http://www.soaspx.com/dotnet/csharp/csharp_20100204_2740.html
方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: private void dataGridView1_RowPostPai ...
- 【IT名人堂】何云飞:阿里云数据库的架构演进之路
[IT名人堂]何云飞:阿里云数据库的架构演进之路 原文转载自:IT168 如果说淘宝革了零售的命,那么DT革了企业IT消费的命.在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”, ...
- 【Android 界面效果36】Fragment管理
要管理fragment们,需使用FragmentManager,要获取它,需在activity中调用方法getFragmentManager(). 你可以用FragmentManager来做以上事情: ...
- Oracle基础 数据库备份和恢复
一.为什么需要数据备份 造成数据丢失的主要原因: 1.介质故障. 2.用户的错误操作. 3.服务器的彻底崩溃. 4.计算机病毒. 5.不可预料的因素. Oracle中故障类型分为以下4种. 1.语句故 ...