Java對象、Json、Xml轉換工具Jackson使用

在Java項目中將一個對象轉換成一段Json格式的字符串是很是常見的,可以實現這種需求的工具包也比較多,例如Gson、JSON-lib、Jackson等等。本文主要介紹Jackson的使用,Jackson除了能實現Java對象與Json串的互轉外,還能將Java對象轉換爲Xml格式,使用較爲簡單並且聽說效率比較高。
對於Jackson的jar包咱們能夠從maven資源庫中下載:http://mvnrepository.com/css

所需jar包以下,按照名稱搜索下載便可。java

這裏寫圖片描述

接下來編寫測試用例,咱們須要一個java類:json

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字符串:markdown

@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();
        } 
    }

運行測試方法,控制檯輸出:app

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

2.將Json字符串轉爲Java對象:maven

/* * 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方法,運行測試方法,控制檯輸出:ide

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對象:this

/* * 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();
        }

    }
}
相關文章
相關標籤/搜索