溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Jackson工具對(duì)Java對(duì)象、Json和Xml進(jìn)行轉(zhuǎn)換

發(fā)布時(shí)間:2020-06-15 10:34:58 來(lái)源:億速云 閱讀:1293 作者:Leah 欄目:編程語(yǔ)言

如何使用Jackson工具對(duì)Java對(duì)象、Json和Xml進(jìn)行轉(zhuǎn)換?針對(duì)這個(gè)問(wèn)題,這篇文章給出了相對(duì)應(yīng)的分析和解答,希望能幫助更多想解決這個(gè)問(wèn)題的朋友找到更加簡(jiǎn)單易行的辦法。

在Java項(xiàng)目中將一個(gè)對(duì)象轉(zhuǎn)換成一段Json格式的字符串是非常常見的,能夠?qū)崿F(xiàn)這種需求的工具包也比較多,例如Gson、JSON-lib、Jackson等等。本文主要介紹Jackson的使用,Jackson除了能實(shí)現(xiàn)Java對(duì)象與Json串的互轉(zhuǎn)外,還能將Java對(duì)象轉(zhuǎn)換為Xml格式,使用較為簡(jiǎn)單而且據(jù)說(shuō)效率比較高。
對(duì)于Jackson的jar包我們可以從maven資源庫(kù)中下載:http://www.php.cn/

所需jar包如下,按照名稱搜索下載即可。

如何使用Jackson工具對(duì)Java對(duì)象、Json和Xml進(jìn)行轉(zhuǎn)換

接下來(lái)編寫測(cè)試用例,我們需要一個(gè)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對(duì)象轉(zhuǎn)換為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();
        } 
    }

運(yùn)行測(cè)試方法,控制臺(tái)輸出:

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

2.將Json字符串轉(zhuǎn)為Java對(duì)象:

    /*
     * Json轉(zhuǎn)Java對(duì)象
     */
    @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方法,運(yùn)行測(cè)試方法,控制臺(tái)輸出:

name:Think in Java; price:100

3.將Java對(duì)象轉(zhuǎn)為Xml格式:

     /*
     * Java對(duì)象轉(zhuǎn)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();
        }
    }

運(yùn)行測(cè)試方法,控制臺(tái)輸出:

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

4.將xml格式字符串轉(zhuǎn)為Java對(duì)象:

    /*
     * xml轉(zhuǎn)Java對(duì)象
     */
    @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();
        }

    }

輸出內(nèi)容:

name:Think in Java; price:100

完整的測(cè)試用例代碼:

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對(duì)象轉(zhuǎn) 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轉(zhuǎn)Java對(duì)象
     */
    @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對(duì)象轉(zhuǎn)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轉(zhuǎn)Java對(duì)象
     */
    @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項(xiàng)目中將一個(gè)對(duì)象轉(zhuǎn)換成一段Json格式的字符串是非常常見的,能夠?qū)崿F(xiàn)這種需求的工具包也比較多,例如Gson、JSON-lib、Jackson等等。本文主要介紹Jackson的使用,Jackson除了能實(shí)現(xiàn)Java對(duì)象與Json串的互轉(zhuǎn)外,還能將Java對(duì)象轉(zhuǎn)換為Xml格式,使用較為簡(jiǎn)單而且據(jù)說(shuō)效率比較高。
對(duì)于Jackson的jar包我們可以從maven資源庫(kù)中下載:http://www.php.cn/

所需jar包如下,按照名稱搜索下載即可。

如何使用Jackson工具對(duì)Java對(duì)象、Json和Xml進(jìn)行轉(zhuǎn)換

接下來(lái)編寫測(cè)試用例,我們需要一個(gè)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對(duì)象轉(zhuǎn)換為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();
        } 
    }

運(yùn)行測(cè)試方法,控制臺(tái)輸出:

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

2.將Json字符串轉(zhuǎn)為Java對(duì)象:

    /*
     * Json轉(zhuǎn)Java對(duì)象
     */
    @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方法,運(yùn)行測(cè)試方法,控制臺(tái)輸出:

name:Think in Java; price:100

3.將Java對(duì)象轉(zhuǎn)為Xml格式:

     /*
     * Java對(duì)象轉(zhuǎn)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();
        }
    }

運(yùn)行測(cè)試方法,控制臺(tái)輸出:

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

4.將xml格式字符串轉(zhuǎn)為Java對(duì)象:

    /*
     * xml轉(zhuǎn)Java對(duì)象
     */
    @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();
        }

    }

輸出內(nèi)容:

name:Think in Java; price:100

完整的測(cè)試用例代碼:

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對(duì)象轉(zhuǎn) 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轉(zhuǎn)Java對(duì)象
     */
    @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對(duì)象轉(zhuǎn)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轉(zhuǎn)Java對(duì)象
     */
    @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();
        }

    }
}

以上就是使用Jackson工具對(duì)Java對(duì)象、Json和Xml進(jìn)行轉(zhuǎn)換的方法,詳細(xì)使用情況還需要大家自己親自動(dòng)手使用過(guò)才能領(lǐng)會(huì)。如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI