android:json解析的两个工具:Gson和Jackson的使用小样例
1.简单介绍
json是android与server通信过程中经常使用的数据格式,比如。例如以下是一个json格式的字符串:
{"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","age":20},{"name":"stu1","id":"10001","age":21},{"name":"stu1","id":"10002","age":22}]}
2.android中经常使用的两个json库为:Gson和Jackson,一下就看一下它们是怎样将对象转化为json字符串,以及怎样将json字符串转化为java对象。
定义Student类:
/*
* $filename: Student.java,v $
* $Date: 2014-5-12 $
* Copyright (C) ZhengHaibo, Inc. All rights reserved.
* This software is Made by Zhenghaibo.
*/
package com.example.testjson;
/*
*@author: ZhengHaibo
*web: http://blog.csdn.net/nuptboyzhb
*mail: zhb931706659@126.com
*2014-5-12 Nanjing,njupt,China
*/
public class Student {
private String name;
private String id;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
定义School类:
/*
* $filename: School.java,v $
* $Date: 2014-5-12 $
* Copyright (C) ZhengHaibo, Inc. All rights reserved.
* This software is Made by Zhenghaibo.
*/
package com.example.testjson; import java.util.List;
/*
*@author: ZhengHaibo
*web: http://blog.csdn.net/nuptboyzhb
*mail: zhb931706659@126.com
*2014-5-12 Nanjing,njupt,China
*/
public class School {
private String name;
private String address;
List<Student> students;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}
初始化一个School的java对象,待使用:
private School initSchoolData(){
			School school = new School();
			school.setAddress("Nanjing");
			school.setName("NUPT");
			List<Student> list = new ArrayList<Student>();
			for(int i= 0;i<3;i++){
				Student student = new Student();
				student.setAge(20+i);
				student.setId("1000"+i);
				student.setName("stu"+1);
				list.add(student);
			}
			school.setStudents(list);
			return school;
		}
3.使用Gson。进行java对象与json字符串之间的相互转换
private void testGson(){
			School school = initSchoolData();
			Gson gson = new Gson();
			//将对象转化为json字符串
			String jsonString = gson.toJson(school).toString();
			//打印
			System.out.println("GSON="+jsonString);
			/******切割线*****/
			//将字符串转化为JSON对象
			School resultSchool = gson.fromJson(jsonString, School.class);
			//打印
			System.out.println(resultSchool.getStudents().get(0).getName());
		}
可见,Gson是通过toJson和fromJson两个方法进行转换的,使用起来十分方便。
4.使用Jackson
private void testJackson(){
			School school = initSchoolData();
			ObjectMapper objectMapper = new ObjectMapper();
			String jsonString = "";
			//将对象转化为Json字符串
			try {
				jsonString = objectMapper.writeValueAsString(school);
				System.out.println("Jackson="+jsonString);
			} catch (JsonProcessingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//将json字符串解析成java对象
			try {
				School resultSchool = objectMapper.readValue(jsonString, School.class);
				//打印
				System.out.println(resultSchool.getStudents().get(0).getName());
			} catch (JsonParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (JsonMappingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
使用Jackson,主要是使用writeValueAsString和readValue这两个方法。此外。Jackson的writeValue和readValue有非常多种參数类型,适用于多中场合。
注意:以上仅仅是这两个工具类的基本使用方法,很多其它了解。參见官方文档。
Gson文档:http://code.google.com/p/google-gson/
Jackson:http://jackson.codehaus.org/
android:json解析的两个工具:Gson和Jackson的使用小样例的更多相关文章
- android:json解析的两个工具:Gson和Jackson的使用小例子
		
1.简介 json是android与服务器通信过程中常用的数据格式,例如,如下是一个json格式的字符串: {"address":"Nanjing"," ...
 - Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比
		
介绍 移动互联网产品与服务器端通信的数据格式,如果没有特殊的需求的话,一般选择使用JSON格式,Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高 ...
 - Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
		
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
 - Android Json解析与总结
		
一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
 - android json 解析简单实例
		
Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...
 - android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
		
android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...
 - Android JSON 解析关键代码
		
Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...
 - android json解析详细介绍之gson
		
废话不多说,什么json是轻量级数据交换标准:自己百度去深入了解:这里有三种json解析工具.本人只用过其中两种: 1.Google Json利器之Gson 评价:简单,方便. 2.阿里巴巴 ...
 - android JSON解析之JSONObject与GSON
		
1.写在前面 JSON数据是android网络开发中常见的数据格式,JSON最常见的传输方法是使用HTTP协议,关于android开发中HTTP协议的使用方法可参考我的另一篇随笔android网络编程 ...
 
随机推荐
- oracle判断查询结果是否为空
			
create table test1023(id int); --创建测试表 test1023 declare cnt int; begin select count(*) into cnt from ...
 - AES加解密JS和php互相处理字符
			
Reference: http://blog.csdn.net/carlos__z/article/details/53185082 JavaScript code? 1 2 3 4 5 6 7 8 ...
 - 创建一个动态链接库 (DLL),使用VS2010
			
在本演练中,您将创建一个动态链接库 (DLL),其中包含可供其他应用程序使用的有用例程.使用 DLL 是一种重用代码的绝佳方式.您不必在自己创建的每个程序中重新实现这些例程,而只需对这些例程编写一次, ...
 - Python内置字典;dict ,set
			
dict and set dict: 键-值 /重复添加 set : 键 / key不能重复 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容.相反,这些方法会创建新的对象并返 ...
 - jsonp爬取页面
			
jsonp Connection conn = Jsoup.connect("http://ip.taobao.com/service/getIpInfo.php?ip=" + i ...
 - 课后作业——用lastIndexOf判断是否是字符串的最后一位
			
package test; public class Testlianxi { public static void main(String[] args) { //判断fgh是否是字符串的最后一位 ...
 - 删除TP数据库缓存
			
删除 /Runtime/Data/_fields/ 缓存表文件
 - Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常
			
错误信息: “System.Data.Entity.Core.EntityCommandExecutionException”类型的异常在 EntityFramework.SqlServer.dll ...
 - C#里面的三种定时计时器:Timer
			
在.NET中有三种计时器:1.System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet.Timer控件只有绑定了Tick事件和设置Enabled=True后才会 ...
 - Hibernate- 开发环境准备
			
数据库:两张表,两者通过publisher_id构成关联关系. Book(图书表) CREATE TABLE `t_book` ( `id` int(11) NOT NULL AUTO_INCREME ...