Java对象、Json、Xml转换工具Jackson使用
在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jackson除了能实现Java对象与Json串的互转外,还能將Java对象转换为Xml格式,使用较为简单而且据说效率比较高。
对于Jackson的jar包我们可以从maven资源库中下载:http://mvnrepository.com/
所需jar包如下,按照名称搜索下载即可。
接下来编写测试用例,我们需要一个java类:
package com.csii.jackson.object;
public class Book{
private String name;
private int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public Book() {
}
public Book(String name,int price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "name:" + name +"; price:" + price;
}
}
1.將Java对象转换为Json字符串:
@Test
public void testGenJson()
{
ObjectMapper objMapper = new ObjectMapper();
Book book = new Book("Think in Java",100);
try {
jsonGen = objMapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);
jsonGen.writeObject(book);
} catch (IOException e) {
e.printStackTrace();
}
}
运行测试方法,控制台输出:
{"name":"Think in Java","price":100}
2.將Json字符串转为Java对象:
/*
* Json转Java对象
*/
@Test
public void testGenObjByJson()
{
ObjectMapper objMapper = new ObjectMapper();
String json = "{\"name\":\"Think in Java\",\"price\":100}";
try {
Book book = objMapper.readValue(json, Book.class);
System.out.println(book);
} catch (IOException e) {
e.printStackTrace();
}
}
由于我们重写了Book类的toString方法,运行测试方法,控制台输出:
name:Think in Java; price:100
3.將Java对象转为Xml格式:
/*
* Java对象转xml
*/
@Test
public void testGenXml()
{
XmlMapper xmlMapper = new XmlMapper();
Book book = new Book("Think in Java",100);
try {
String xmlStr = xmlMapper.writeValueAsString(book);
System.out.println(xmlStr);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
运行测试方法,控制台输出:
<Book xmlns=""><name>Think in Java</name><price>100</price></Book>
4.將xml格式字符串转为Java对象:
/*
* xml转Java对象
*/
@Test
public void testGenObjByXml()
{
XmlMapper xmlMapper = new XmlMapper();
String xmlStr = "<Book><name>Think in Java</name><price>100</price></Book>";
try {
Book book = xmlMapper.readValue(xmlStr, Book.class);
System.out.println(book);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出内容:
name:Think in Java; price:100
完整的测试用例代码:
package com.csii.jackson.test;
import java.io.IOException;
import org.junit.Test;
import com.csii.jackson.object.Book;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
@SuppressWarnings("deprecation")
public class JsonTest {
private JsonGenerator jsonGen = null;
/*
* Java对象转 Json
*/
@Test
public void testGenJson()
{
ObjectMapper objMapper = new ObjectMapper();
Book book = new Book("Think in Java",100);
try {
jsonGen = objMapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);
jsonGen.writeObject(book);
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* Json转Java对象
*/
@Test
public void testGenObjByJson()
{
ObjectMapper objMapper = new ObjectMapper();
String json = "{\"name\":\"Think in Java\",\"price\":100}";
try {
Book book = objMapper.readValue(json, Book.class);
System.out.println(book);
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* Java对象转xml
*/
@Test
public void testGenXml()
{
XmlMapper xmlMapper = new XmlMapper();
Book book = new Book("Think in Java",100);
try {
String xmlStr = xmlMapper.writeValueAsString(book);
System.out.println(xmlStr);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
/*
* xml转Java对象
*/
@Test
public void testGenObjByXml()
{
XmlMapper xmlMapper = new XmlMapper();
String xmlStr = "<Book><name>Think in Java</name><price>100</price></Book>";
try {
Book book = xmlMapper.readValue(xmlStr, Book.class);
System.out.println(book);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Java对象、Json、Xml转换工具Jackson使用的更多相关文章
- jsonUtils&&Json、Xml转换工具Jackson使用
1.jsonUtils package com.icil.utils; import java.util.List; import com.fasterxml.jackson.core.JsonPro ...
- Java对象和Excel转换工具XXL-EXCEL
<Java对象和Excel转换工具XXL-EXCEL> 一.简介 1.1 概述 XXL-EXCEL 是一个灵活的Java对象和Excel文档相互转换的工具. 一行代码完成Java对象和Ex ...
- Java对象和XML转换
有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样 ...
- java对象与xml相互转换工具类
public class XmlHelper { /** * Object转XML * * @param object * @return * @throws Exception */ public ...
- Json:Java对象和Json文本转换工具类
Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...
- JAXB实现java对象与xml之间转换
JAXB简介: 1.JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标 ...
- JSON对象与XML相互转换工具类
依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId ...
- 使用XStream注解实现Java对象与XML互相转换的代码示例
本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例. 我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...
- JSON与Java对象的互相转换
JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do") @ResponseBody public JSONObject ...
随机推荐
- 如何像Uber一样给工程师派单 解放外包落后的生产力
2014年,陈柯好的第一个创业项目失败,半年之内,陈柯好以技术合伙人的方式游走于旅游.电商.团购.票务等各种领域.正当他对职业方向感到迷茫时,“大众创业.万众创新”的口号被提了出来 一时间,技术需求被 ...
- C#学习 第十节
操作符(operator) 1.操作符的概览 从上到下优先级依次减弱: 2.操作符的本质 操作符的本质是函数的简记法: 计算机的操作符不能脱离与它关联的数据类型: 3.操作符的优先级 可以使用括号 4 ...
- windows 端口号占用和解决方法
https://blog.csdn.net/qq_39657909/article/details/80378983
- 研究发现:TLS1.3中的 TLS 对话恢复机制可以追踪用户
由于隐私浏览器技术的日渐成熟,网站越来越无法通过 Cookie 和网页浏览器特征来追踪用户,但道高一尺魔高一丈,现在这些网站会用 TLS 1.3 中的 TLS 对话恢复机制追踪用户. 你以为禁用浏览器 ...
- sh脚本文件
echo `date +%F` 打印当前日期 用于写备份脚本按照名字命名
- 2016 年 Java 工具和技术的调查:IDEA 已超过
最近「技术最前线」看到 RebelLabs 做了一次 2016 年 Java 工具与技术的调查,调查报告虽然是 6 月公布的,但数据一点也不过时. 所以「技术最前线」忙会了一中午,写了这篇文章,带大家 ...
- Springboot分布式锁实践(redis)
springboot2本地锁实践一文中提到用Guava Cache实现锁机制,但在集群中就行不通了,所以我们还一般要借助类似Redis.ZooKeeper 之类的中间件实现分布式锁,下面我们将利用自定 ...
- Linux-经常用到的几个命令
-- |" 拷贝本地到远程 scp /serverdata/server/tomcat-uaac/webapps/dm.war root@172.16.7.123:/serverdata/s ...
- HDU 1431
可以先找出回文数,再用素数测试来判是否为素数即可. 打回文数时,因为左右对称,可以只枚举后半部,然后通过逆转得到前半部分. #include <iostream> #include < ...
- HDU 1575 EASY
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...