android jackson xml,[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包:

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 JsonToObject(String jsonString, Class 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 XmlToObject(String xml, Class 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学习笔记36:使用SQLite方式存储数据

在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文

【转】 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 学习笔记&colon; lesson 4 part b

udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...

随机推荐

关于SSIS中解密FTP字符串的方法

FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过它把自己的PC ...

关闭ctrl&plus;shift&plus;d截图

关闭ctrl+shift+d截图,最近用sublime text3的时候,用ctrl+shift+d,总是跳出来截图,找了半天,原来是百度浏览器的截图功能快捷键是ctrl+shift+d, 关掉即可

RabbitMQ集群环境搭建-4

确保成功安装好JDK,erlang,RabbitMQ等,并且RabbitMQ能正常启动,多台电脑之间能互相ping得通. 1. 安装 erlang.rabbitmq 如: 192.168.1.1.19 ...

详解YUV与RGB数据格式-2016&period;01&period;20

参考文献 什么是I帧,P帧,B帧 图文详解YUV420数据格式 RGB565 与 RGB888的相互转换 最简单的基于FFmpeg的libswscale的示例(YUV转RGB)

PHP图形计算器(计算三角形矩形周长面积)

运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php;   ...

如何在AD6&lpar;altium designer 6&period;x&rpar;中设置PCB大小

做一块板子,体积比较的大(长度有20CM),而AD默认的长度只有15cm,满足不了本人要求.在网上找到了解决方法: 先在Mechanical(机械层,如Mechanical1)下绘制一个板框,也就是你 ...

WPF&nbsp&semi;接收exe传的值

原文:WPF 接收exe传的值 一,首先重载APP protected override void OnStartup(StartupEventArgs e)         {            ...

勇者斗恶龙 uva 11292(简单贪心)

思路:先将龙和士兵进行分别排序从小到大.然后,每次找当前最小龙的第一个大于它的骑手之后退出,开始下一个龙,重复上一次操作. #include #include

Flask 快速使用 进阶—— (2)

案例:可配置发送信息的系统 假如我们有这样的一个系统,可以发送短息,邮件和微信,后期可能还会增加一些平台,怎么才可以做到快速切换的去使用某种功能呢,在这里我会通过在配置文件中简单的配置就可以实现 在项 ...

Python创建随机用户名密码并存放于Access数据库

利用random库随机生成4到32位包含字母跟数字的用户名密码,利用win32com库连接到access数据库并写入table,要更改创建的用户名密码数量修改18行代码的数字即可. import wi ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值