Java对象、Json、Xml转换工具Jackson使用

深碍√TFBOYSˉ_ 2022-08-04 11:56 279阅读 0赞

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

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

这里写图片描述

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

  1. package com.csii.jackson.object;
  2. public class Book{
  3. private String name;
  4. private int price;
  5. public String getName() {
  6. return name;
  7. }
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. public int getPrice() {
  12. return price;
  13. }
  14. public void setPrice(int price) {
  15. this.price = price;
  16. }
  17. public Book() {
  18. }
  19. public Book(String name,int price) {
  20. this.name = name;
  21. this.price = price;
  22. }
  23. @Override
  24. public String toString() {
  25. return "name:" + name +"; price:" + price;
  26. }
  27. }

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

  1. @Test
  2. public void testGenJson()
  3. {
  4. ObjectMapper objMapper = new ObjectMapper();
  5. Book book = new Book("Think in Java",100);
  6. try {
  7. jsonGen = objMapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);
  8. jsonGen.writeObject(book);
  9. } catch (IOException e) {
  10. e.printStackTrace();
  11. }
  12. }

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

  1. {"name":"Think in Java","price":100}

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

  1. /* * Json转Java对象 */
  2. @Test
  3. public void testGenObjByJson()
  4. {
  5. ObjectMapper objMapper = new ObjectMapper();
  6. String json = "{\"name\":\"Think in Java\",\"price\":100}";
  7. try {
  8. Book book = objMapper.readValue(json, Book.class);
  9. System.out.println(book);
  10. } catch (IOException e) {
  11. e.printStackTrace();
  12. }
  13. }

由于我们重写了Book类的toString方法,运行测试方法,控制台输出:

  1. name:Think in Java; price:100

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

  1. /* * Java对象转xml */
  2. @Test
  3. public void testGenXml()
  4. {
  5. XmlMapper xmlMapper = new XmlMapper();
  6. Book book = new Book("Think in Java",100);
  7. try {
  8. String xmlStr = xmlMapper.writeValueAsString(book);
  9. System.out.println(xmlStr);
  10. } catch (JsonProcessingException e) {
  11. e.printStackTrace();
  12. }
  13. }

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

  1. <Book xmlns=""><name>Think in Java</name><price>100</price></Book>

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

  1. /* * xml转Java对象 */
  2. @Test
  3. public void testGenObjByXml()
  4. {
  5. XmlMapper xmlMapper = new XmlMapper();
  6. String xmlStr = "<Book><name>Think in Java</name><price>100</price></Book>";
  7. try {
  8. Book book = xmlMapper.readValue(xmlStr, Book.class);
  9. System.out.println(book);
  10. } catch (IOException e) {
  11. // TODO Auto-generated catch block
  12. e.printStackTrace();
  13. }
  14. }

输出内容:

  1. name:Think in Java; price:100

完整的测试用例代码:

  1. package com.csii.jackson.test;
  2. import java.io.IOException;
  3. import org.junit.Test;
  4. import com.csii.jackson.object.Book;
  5. import com.fasterxml.jackson.core.JsonEncoding;
  6. import com.fasterxml.jackson.core.JsonGenerator;
  7. import com.fasterxml.jackson.core.JsonProcessingException;
  8. import com.fasterxml.jackson.databind.ObjectMapper;
  9. import com.fasterxml.jackson.dataformat.xml.XmlMapper;
  10. @SuppressWarnings("deprecation")
  11. public class JsonTest {
  12. private JsonGenerator jsonGen = null;
  13. /* * Java对象转 Json */
  14. @Test
  15. public void testGenJson()
  16. {
  17. ObjectMapper objMapper = new ObjectMapper();
  18. Book book = new Book("Think in Java",100);
  19. try {
  20. jsonGen = objMapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);
  21. jsonGen.writeObject(book);
  22. } catch (IOException e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. /* * Json转Java对象 */
  27. @Test
  28. public void testGenObjByJson()
  29. {
  30. ObjectMapper objMapper = new ObjectMapper();
  31. String json = "{\"name\":\"Think in Java\",\"price\":100}";
  32. try {
  33. Book book = objMapper.readValue(json, Book.class);
  34. System.out.println(book);
  35. } catch (IOException e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. /* * Java对象转xml */
  40. @Test
  41. public void testGenXml()
  42. {
  43. XmlMapper xmlMapper = new XmlMapper();
  44. Book book = new Book("Think in Java",100);
  45. try {
  46. String xmlStr = xmlMapper.writeValueAsString(book);
  47. System.out.println(xmlStr);
  48. } catch (JsonProcessingException e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. /* * xml转Java对象 */
  53. @Test
  54. public void testGenObjByXml()
  55. {
  56. XmlMapper xmlMapper = new XmlMapper();
  57. String xmlStr = "<Book><name>Think in Java</name><price>100</price></Book>";
  58. try {
  59. Book book = xmlMapper.readValue(xmlStr, Book.class);
  60. System.out.println(book);
  61. } catch (IOException e) {
  62. // TODO Auto-generated catch block
  63. e.printStackTrace();
  64. }
  65. }
  66. }

发表评论

表情:
评论列表 (有 0 条评论,279人围观)

还没有评论,来说两句吧...

相关阅读