[Android学习笔记]jackson库的使用
Jackson库一般用于序列化和反序列化操作,通常会涉及到的操作是:
1. Java Object -> Json String
2. Java Object -> Xml String
3. Json String -> Java Object
4. Xml String -> Java Object
JSON相关操作需要jar包:jackson-all-x.x.x.jar
XML相关操作需要jar包:
要在Android下使用Jackson,则需要:
jackson-dataformat-android
aalto-xml
stax-api
stax2-api
4个jar包
下载地址:
在此可下载所有相关jar包:
http://pan.baidu.com/s/1pJ9DyGV
Ex:
SerializationHelper.java
package com.example.utils; import java.io.IOException; import com.fasterxml.aalto.stax.InputFactoryImpl;
import com.fasterxml.aalto.stax.OutputFactoryImpl;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
import com.fasterxml.jackson.dataformat.xml.XmlFactory;
import com.fasterxml.jackson.dataformat.xml.XmlMapper; public class SerializationHelper
{
private static ObjectMapper objectMapper = new ObjectMapper(); /**
* Java Object to JSON String
*
* @param object
* @return
*/
public static String ObjectToJson(Object object)
{
String result = null; try
{
result = objectMapper.writeValueAsString(object); } catch (JsonProcessingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} return result;
} /** JSON to Java Object
*
* @param jsonString
* @param clazz
* @return
*/
public static <T> T JsonToObject(String jsonString, Class<T> clazz)
{
T result = null; try
{
result = objectMapper.readValue(jsonString, clazz); } 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();
} return result;
} /**
* Java Object to XML String
*
* @param object
* @return
*/
public static String ObjectToXml(Object object)
{
String result = null; XmlFactory factory = new XmlFactory(new InputFactoryImpl(), new OutputFactoryImpl()); JacksonXmlModule module = new JacksonXmlModule(); XmlMapper mapper = new XmlMapper(factory, module); try
{
result = mapper.writeValueAsString(object);
} catch (JsonProcessingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} return result;
} /** XML to Java Object
*
* @param xml
* @param clazz
* @return
*/
public static <T> T XmlToObject(String xml, Class<T> clazz)
{
T result = null; XmlFactory factory = new XmlFactory(new InputFactoryImpl(), new OutputFactoryImpl());
JacksonXmlModule module = new JacksonXmlModule();
XmlMapper mapper = new XmlMapper(factory, module); try
{
result = mapper.readValue(xml, clazz);
} 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();
} return result;
}
}
SerializationHelper
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Student st = new Student();
st.setName("stephen lee");
st.setAge(123);
st.setId(1); String jsonString = SerializationHelper.ObjectToJson(st);
String xmlString = SerializationHelper.ObjectToXml(st); Toast.makeText(this, jsonString, Toast.LENGTH_SHORT).show();
Toast.makeText(this, xmlString, Toast.LENGTH_SHORT).show(); Student stFromJson = SerializationHelper.JsonToObject(jsonString, Student.class);
Student stFromXml = SerializationHelper.XmlToObject(xmlString, Student.class); Toast.makeText(this, "stFromJson:" + stFromJson.getName(), Toast.LENGTH_SHORT).show();
Toast.makeText(this, "stFromXml:" + stFromXml.getName(), Toast.LENGTH_SHORT).show();
}
MainActivity.java
[Android学习笔记]jackson库的使用的更多相关文章
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- 【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注 ...
- 【转】 Pro Android学习笔记(六九):HTTP服务(3):HTTP POST MultiPart
目录(?)[-] 建立测试环境 开发环境导入第三方JAR HTTP Post Multipart小例子 HTTP POST不仅可以通过键值对传递参数,还可以携带更为复杂的参数,例如文件.HTTP Po ...
- Android学习笔记(一)
目录 Android学习笔记(一) 一.JDK.Android SDK 二.部分项目结构 三.字符串引用 四.外层build.gradle详解 五.app->build.gradle详解 六.日 ...
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- Android学习笔记进阶之在图片上涂鸦(能清屏)
Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...
- android学习笔记36——使用原始XML文件
XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- udacity android 学习笔记: lesson 4 part b
udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...
随机推荐
- 一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法
CodeIgniter 框架最显著的特征就是 MVC 模式,它的做法就是提取 url 中的'分段', 映射到某个类的某个方法,从而由该方法来输出最终显示的页面内容.那么我们第一课中就是实现一个这样的原 ...
- CSS:重量和级联规则,确定其优先级
资源:http://www.ido321.com/1063.html 首先,给大家看一篇关于CSS优先级的演示样例:http://www.ido321.com/76.html 一.主要的优先级规则 比 ...
- linux命令:使用man, 导出man
要查一个命令怎么使用,使用"man 命令", eg: man find, man ls; "info 命令"貌似也可以看, info find, info ls ...
- Selenium 出现: Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
webDriver 运行的时候出现: Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal 解决办法: 只 ...
- Linux的grep命令详解
简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...
- PHP开发经验中介(thinkphp3.2使用技巧)
1.在模板中截取字符串 {$vo.create_date|mb_substr=###,0,10,'utf-8'}
- Storm流计算之项目篇(Storm+Kafka+HBase+Highcharts+JQuery,含3个完整实际项目)
1.1.课程的背景 Storm是什么? 为什么学习Storm? Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop. 随着越来越多的场景对Hadoop的MapRed ...
- Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)
1 MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...
- IOS 应用的架构解析
首先新建一个IOS 的应用工程,主要讲解一下的文件组成: main.m XXXXDelegete.h\.m MainWindow.xib info.plist 文件 IOS 应用程序由UIKit 封装 ...
- 基于android的实时音频频谱仪
前一段实习,本来打算做c++,到了公司发现没啥项目,于是乎转行做了android,写的第一个程序竟然要我处理信号,咱可是一心搞计算机的,没接触过信号的东西,什么都没接触过,于是乎, 找各种朋友,各种熟 ...