jackson的使用總結 jason物件xml list之間相互轉換
Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。
前面有介紹過json-lib這個框架,線上博文:http://www.open-open.com/lib/view/open1327991992093.html
相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速度也比較快。
一、準備工作
1、 下載依賴庫jar包
然後在工程中匯入這個jar包即可開始工作
因為下面的程式是用junit測試用例執行的,所以還得新增junit的jar包。版本是junit-4.2.8
如果你需要轉換xml,那麼還需要stax2-api.jar
2、 測試類基本程式碼如下
package com.hoo.test;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
importjava.util.Set;
import org.codehaus.jackson.JsonEncoding;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.JsonNodeFactory;
import org.codehaus.jackson.xml.XmlMapper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.hoo.entity.AccountBean;
/**
* <b>function:</b>Jackson 將java物件轉換成JSON字串,也可以將JSON字串轉換成java物件
* jar-lib-version: jackson-all-1.6.2
* jettison-1.0.1
* @author hoojo
* @createDate 2010-11-23 下午04:54:53
* @file JacksonTest.java
* @package com.hoo.test
* @project Spring3
* @blog http://blog.csdn.net/IBM_hoojo
* @email [email protected]
* @version 1.0
*/
@SuppressWarnings("unchecked")
public class JacksonTest {
private JsonGenerator jsonGenerator = null;
private ObjectMapper objectMapper = null;
private AccountBean bean = null;
@Before
public void init() {
bean = new AccountBean();
bean.setAddress("china-Guangzhou");
bean.setEmail("[email protected]");
bean.setId(1);
bean.setName("hoojo");
objectMapper = new ObjectMapper();
try {
jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
} catch (IOException e) {
e.printStackTrace();
}
}
@After
public void destory() {
try {
if (jsonGenerator != null) {
jsonGenerator.flush();
}
if (!jsonGenerator.isClosed()) {
jsonGenerator.close();
}
jsonGenerator = null;
objectMapper = null;
bean = null;
System.gc();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、 所需要的JavaEntity
package com.hoo.entity;
public class AccountBean {
private int id;
private String name;
private String email;
private String address;
private Birthday birthday;
//getter、setter
@Override
public String toString() {
return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email;
}
}
Birthday
package com.hoo.entity;
public class Birthday {
private String birthday;
public Birthday(String birthday) {
super();
this.birthday = birthday;
}
//getter、setter
public Birthday() {}
@Override
public String toString() {
return this.birthday;
}
}
二、Java物件轉換成JSON
1、 JavaBean(Entity/Model)轉換成JSON
/**
* <b>function:</b>將java物件轉換成json字串
* @author hoojo
* @createDate 2010-11-23 下午06:01:10
*/
@Test
public void writeEntityJSON() {
try {
System.out.println("jsonGenerator");
//writeObject可以轉換java物件,eg:JavaBean/Map/List/Array等
jsonGenerator.writeObject(bean);
System.out.println();
System.out.println("ObjectMapper");
//writeValue具有和writeObject相同的功能
objectMapper.writeValue(System.out, bean);
} catch (IOException e) {
e.printStackTrace();
}
}
執行後結果如下:
jsonGenerator
{"address":"china-Guangzhou","name":"hoojo","id":1,"birthday":null,"email":"[email protected]"}
ObjectMapper
{"address":"china-Guangzhou","name":"hoojo","id":1,"birthday":null,"email":"[email protected]"}
上面分別利用JsonGenerator的writeObject方法和ObjectMapper的writeValue方法完成對Java 物件的轉換,二者傳遞的引數及構造的方式不同;JsonGenerator的建立依賴於ObjectMapper物件。也就是說如果你要使用 JsonGenerator來轉換JSON,那麼你必須建立一個ObjectMapper。但是你用ObjectMapper來轉換JSON,則不需要 JSONGenerator。
objectMapper的writeValue方法可以將一個Java物件轉換成JSON。這個方法的引數一,需要提供一個輸出流,轉換後 可以通過這個流來輸出轉換後的內容。或是提供一個File,將轉換後的內容寫入到File中。當然,這個引數也可以接收一個JSONGenerator, 然後通過JSONGenerator來輸出轉換後的資訊。第二個引數是將要被轉換的Java物件。如果用三個引數的方法,那麼是一個Config。這個 config可以提供一些轉換時的規則,過指定的Java物件的某些屬性進行過濾或轉換等。
2、 將Map集合轉換成Json字串
/**
* <b>function:</b>將map轉換成json字串
* @author hoojo
* @createDate 2010-11-23 下午06:05:26
*/
@Test
public void writeMapJSON() {
try {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", bean.getName());
map.put("account", bean);
bean = new AccountBean();
bean.setAddress("china-Beijin");
相關推薦
jackson的使用總結 jason物件xml list之間相互轉換
Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。 前面有介紹過json-lib這個框架,線上博文:http://www.open-open.com/lib/view/open1327991992093.html 相比json-l
C# DataTable 和List之間相互轉換的方法
dbn execute 屬性 ins 集合 方法 summary efault getprop 一、List<T>/IEnumerable轉換到DataTable/DataView private DataTable ToDataTable<T>(
JSONObject、JSONArray、String、List之間相互轉換
List<BmKh> BmKhs = new ArrayList<>(); // BmKh bmKh=new BmKh(); // bmKh.setBm("1"); // bmKh.setMc("2
Xml字串與C#物件之間相互轉換
我們常常需要讀取xml檔案,把裡面的資訊轉化為我們自定義的型別,或則吧自定義型別轉化為Xml字串。在這裡介紹一個比較簡單的物件轉化方法。在我自己的Framwork裡面也多次用到。裡面涉及到節點、屬性、集合。 示例一 該xml檔案涉及到屬性、節點集合不涉及個節點: <?x
PHP陣列與物件之間相互轉換
/** * 陣列 轉 物件 * * @param array $arr 陣列 * @return object */ function ar
利用Google Gson實現JSON字串和物件之間相互轉換
最近一個專案需要用到JSON,需要在JSON字串和物件之間相互轉換,在網上找了些資料,發現google的Gson還是比較不錯的。 廢話不說,下面是簡單的例子: 先上原始碼:下載(包含jar包) Person實體類 package com.hsun.json; /** * Pe
SOS, 請教:XML和struct之間相互轉換的問題
現在配置基本都像XML方向轉變。那麼, 1、以前是按struct大小直接寫入檔案的,反過來,就直接按struct大小讀入struct就可以了,簡潔; 2、轉XML後,涉及到struct到xml節點之間的相互轉換,這個非常多的重複程式碼。而且太繁瑣,舉個例子,假設一個配置struct有100個欄位,
修改tomcat部署下,專案配置(涉及properties,xml,zip,war之間相互轉換修改)
思路:傳入tomcat部署路徑, 1,遍歷tomcat下所有的資料夾,因為要修改 的檔案都是固定,所以根據傳入路徑就能拼裝要修改的檔案。 2,像1的解決思路,可能導致tomcat不斷在啟動,因為檔案在修改。 所以又想到,將要修改的war包改成Zip,因為其結構都一樣
字串、字元陣列、list之間相互轉化
1.關於java.lang.string.split xxx.split()方法可以將一個字串分割為子字串,然後將結果作為字串陣列返回。 2.字串轉字元陣列 String str ="
XML字串和XML DOCUMENT的相互轉換總結
轉載自: 只是為了查詢方面 在做一般的XML資料交換過程中,我更樂意傳遞XML字串,而不是格式化的XML Document。這就涉及到XML字串和Xml Document的轉換問題,這是個很簡單的問題。一、使用最原始的javax.xml.parsers,標準的jdk a
Json與物件和list之間的轉化
public class JsonUtils { // 定義jackson物件 private static final ObjectMapper MAPPER = new ObjectMapper(); //也可以map轉物件也可以用modelmap。自行
JAXB的使用(java物件和xml文字的相互轉換)
JAXB(Java Architecture for XML Binding) 是一個業界的標準,是一項可以根據XML Schema產生Java類的技術。該過程中,JAXB也提供了將XML例項文件反向生成Java物件樹的方法,並能將Java物件樹的內容重新
XStream實現javabean與xml之間相互轉換
XStream是thoughtworks公司釋出的一個簡單的Java類庫,用於將JavaBean序列化為XML,並且能夠將XML檔案反向轉換為JavaBean. 例項: user.java impor
numpy的array和python中自帶的list之間相互轉化
a=([3.234,34,3.777,6.33]) a為python的list型別 將a轉化為numpy的array: np.array(a) array([ 3.234, 34. , 3.777, 6.33 ]) 將a轉化為python的list
xml檔案和DataTable之間相互轉換
using System.Xml; using System.Xml.Serialization; /// <summary> /// 下面兩個方法實現xml
Android px、dp、sp之間相互轉換
系統 als 屏幕大小 span ava 不同 text 自動 nal dp(dip): device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬件有關,一般我們為了支持WVGA、HVGA和QVGA 推薦使用這個,不依
Android 單位dp和px之間相互轉換
style pan static float logs ati col return roi public class DensityUtil { /** * 根據手機的分辨率從 dp 的單位 轉成為 px(像素) */
關於js中的json對象,json串,數組之間相互轉換
obj oca color 轉換成 之間 str 關於 blog spa 將json對象轉換成string var loginUser = {username: username, password: password}//方式一 localStorage.setItem
JAVA 實現XML與JSON 相互轉換
tst throws light getc con parent urn In 工作 原文地址https://blog.csdn.net/congcong68/article/details/39029907 在工作中,經常碰到XML轉為JSON或者JSON轉為XML,在這
js時間戳與日期格式之間相互轉換
時間日期 TP var gets nbsp unix時間 其他 value nds 時間戳:是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。Unix時間戳不僅被使用在Unix系統、類Unix系統中,也在許多其他操作系統中被