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网络编程 ...
随机推荐
- [转帖]cocos2D-X源码分析之从cocos2D-X学习OpenGL(3)----BATCH_COMMAND
原贴: cocos2D-X源码分析之从cocos2D-X学习OpenGL(3)----BATCH_COMMAND 上一篇介绍了QUAD_COMMAND渲染命令,顺带介绍了VAO和VBO,这一篇介绍批处 ...
- 注解Annotation的IoC:从@Autowired到@Component
注解Annotation的IoC:从@Autowired到@Component 2017-01-23 目录 1 什么是注解2 不使用注解示例 2.1 com.springioc.animal.Mon ...
- js冒泡事件
一.什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处 理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个 ...
- 无法识别的属性 configProtectionProvider的解决方案
用RsaProtectedConfigurationProvider加密数据库连接字符串时,只要App.config有任何改动,都会提示无法识别的属性 configProtectionProvider ...
- [uboot]在uboot里面添加环境变量使用run来执行
转自:http://blog.csdn.net/yangzheng_yz/article/details/41038259 在移植uboot的时候,可以在uboot里面添加定义一些自己的环境变量,这些 ...
- HBase shell 命令。
HBase shell 命令. 进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证,需要事先使用相应的keytab进行一下认证( ...
- [转]ListView学习笔记(一)——缓存机制
要想优化ListView首先要了解它的工作原理,列表的显示需要三个元素:ListView.Adapter.显示的数据: 这里的Adapter就是用到了适配器模式,不管传入的是什么View在ListVi ...
- FFmpeg API变化
可以查看doc目录下的APIchanges和根目录下的Changelog 去掉了ffserver程序 'avcodec_register_all' is deprecated 还有av_regis ...
- 网络openvpn各种问题
今天先配置在同一个vmc下的一个openvpn里的两个虚拟机,同一个网段 一开始出现了如下问题: eth0: ERROR while getting interface flags: No such ...
- Laravel Debugbar
Installation Require this package with composer: composer require barryvdh/laravel-debugbar After up ...