我是靠谱客的博主 娇气果汁,这篇文章主要介绍Java对象、Json、Xml转换工具Jackson使用,现在分享给大家,希望可以做个参考。


在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jackson除了能实现Java对象与Json串的互转外,还能將Java对象转换为Xml格式,使用较为简单而且据说效率比较高。
对于Jackson的jar包我们可以从maven资源库中下载:http://www.uoften.com/

所需jar包如下,按照名称搜索下载即可。

这里写图片描述

接下来编写测试用例,我们需要一个java类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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字符串:

复制代码
1
2
3
4
5
6
7
8
9
10
@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(); } }
登录后复制

运行测试方法,控制台输出:

复制代码
1
{"name":"Think in Java","price":100}
登录后复制
登录后复制

2.將Json字符串转为Java对象:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* * 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方法,运行测试方法,控制台输出:

复制代码
1
name:Think in Java; price:100
登录后复制
登录后复制
登录后复制
登录后复制

3.將Java对象转为Xml格式:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* * 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(); } }
登录后复制
登录后复制

运行测试方法,控制台输出:

复制代码
1
<Book xmlns=""><name>Think in Java</name><price>100</price></Book>
登录后复制
登录后复制

4.將xml格式字符串转为Java对象:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* * 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(); } }
登录后复制
登录后复制

输出内容:

复制代码
1
name:Think in Java; price:100
登录后复制
登录后复制
登录后复制
登录后复制

完整的测试用例代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jackson除了能实现Java对象与Json串的互转外,还能將Java对象转换为Xml格式,使用较为简单而且据说效率比较高。
对于Jackson的jar包我们可以从maven资源库中下载:http://www.uoften.com/

所需jar包如下,按照名称搜索下载即可。

这里写图片描述

接下来编写测试用例,我们需要一个java类:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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字符串:

复制代码
1
2
3
4
5
6
7
8
9
10
@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(); } }
登录后复制

运行测试方法,控制台输出:

复制代码
1
{"name":"Think in Java","price":100}
登录后复制
登录后复制

2.將Json字符串转为Java对象:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* * 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方法,运行测试方法,控制台输出:

复制代码
1
name:Think in Java; price:100
登录后复制
登录后复制
登录后复制
登录后复制

3.將Java对象转为Xml格式:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* * 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(); } }
登录后复制
登录后复制

运行测试方法,控制台输出:

复制代码
1
<Book xmlns=""><name>Think in Java</name><price>100</price></Book>
登录后复制
登录后复制

4.將xml格式字符串转为Java对象:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* * 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(); } }
登录后复制
登录后复制

输出内容:

复制代码
1
name:Think in Java; price:100
登录后复制
登录后复制
登录后复制
登录后复制

完整的测试用例代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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使用的内容,更多相关内容请关注靠谱客(www.uoften.com)!

最后

以上就是娇气果汁最近收集整理的关于Java对象、Json、Xml转换工具Jackson使用的全部内容,更多相关Java对象、Json、Xml转换工具Jackson使用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(177)

评论列表共有 0 条评论

立即
投稿
返回
顶部