您好,登錄后才能下訂單哦!
如何使用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包如下,按照名稱搜索下載即可。
接下來(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包如下,按照名稱搜索下載即可。
接下來(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è)資訊頻道!
免責(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)容。