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数据总结的更多相关文章

  1. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  2. 使用jQuery解析JSON数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. 上例中得到的JSON数据如下,是一个嵌套JSON: {"comments&quo ...

  3. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  4. 用jquery解析JSON数据的方法以及字符串转换成json的3种方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...

  5. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  6. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  7. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

    摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...

  8. JSONKit解析json数据

    先将第三方文件拖进工程 JSONKit.h和JSONKit.m 然后设置在ARC工程中添加MRC文件,如下图所示 #import "ViewController.h" #impor ...

  9. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  10. 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)

    在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...

随机推荐

  1. 剑指 offer set 9 包含min函数的栈

    总结 1. 要求栈的 push, pop, min 都是 o(1). 普通栈支持 Push Pop 操作, 且时间复杂度已为 o(1), 再加上 Min 函数, 时间复杂度已无法优化, 只能通过加空间 ...

  2. 终端I/O之特殊输入字符

    POSIX.1定义了11个在输入时作特殊处理的字符.实现定义了另外一些特殊字符.表18-6摘要列出了这些特殊字符. 表18-6 终端特殊输入字符 在POSIX.1的11个特殊字符中,可将其中9个更改为 ...

  3. 让Laravel5支持memcache的方法

    Laravel5框架在Cache和Session中不支持Memcache,看清了是Memcache而不是Memcached哦,MemCached是支持的但是这个扩展真的是装的蛋疼,只有修改部分源码让其 ...

  4. c++ 构造函数,拷贝构造函数,析构函数与赋值操作符

    题目: 为下面的Rectangle类实现构造函数,拷贝构造函数,赋值操作符,析构函数. class Shape { int no; }; class Point { int x; int y; }; ...

  5. rsync同步工具学习笔记

    rsync同步工具 1.rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于unix/linux/windows等多种操作 ...

  6. selenium python 定位一组对象

    为什么定位一组对象? 定位一组对象的思想    在定位一组对象的过程中我们如何实现?以前的都是通过具体的对象定位,那么定位一组我们就需要通过css来定位   在单个定位对象中使用的是find_elem ...

  7. C#透明窗体代码详解

    using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...

  8. [ASP.NET]SQL Server 连接字符串和身份验证

    SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开. PropertyName1=Value1; Property ...

  9. PHP常用文件函数和目录函数整理

    一.常用文件函数库 1.basename(); -- 返回路径中的文件名部分. string basename ( string $path [, string $suffix ] ) //给出一个包 ...

  10. 【Android 界面效果41】Matrix 与 ColorMatrix

    Matrix: 简单用法就是直接使用它的setXX()方法 而高级一点来理解他就是去理解一个线性矩形 首先我们来认识线性矩形:(用画图粗略地画不要见怪) 分析: 那还有一组 MRERSP_0 MRER ...