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

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

所需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使用的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. Java&Xml教程(十一)JAXB实现XML与Java对象转换
  2. 利用XMLSerializer将对象串行化到XML
  3. Web设计中如何使用XML数据源对象详细介绍
  4. XmlSerializer 对象的Xml序列化和反序列化的示例代码分析
  5. XML中的树形结构与DOM文档对象模型的示例代码(图)
  6. XmlDocument 对象操作详细步骤
  7. Microsoft的XMLHTTP对象详解
  8. 详解XMLHTTP对象封装技术的示例代码
  9. 详细介绍通过JAXB实现XML和对象之间的映射

随机推荐

  1. Android Input子系统浅谈
  2. WebView In Mobile App
  3. 使用ViewFlipper来组织控件
  4. Android(安卓)NDK编译C/C++为so共享对象
  5. 将Android DHCPInfo 属性转换为int类型(使
  6. Android有趣的全透明效果--Activity及Dia
  7. 实例:在Android调用WCF服务(wcf restful)
  8. Android开发资源完全汇总
  9. android 学习RxJava+Retrofit的资料
  10. Android EditText光标颜色 与inputType