jackson用于java對象到json的序列化與反序列化。還支援xml格式。
jackson用于實作json與java對象的序列與反序列化。web service要實作跨機器傳送對象那麼就需要有一種技術能把對象轉換為特定格式的資訊。為了實作跨平台(比如把java對象轉化為c#或c++對象),又考慮到友善人們閱讀,是以基于字元串規則的轉換是最理想的。json就是這樣一個輕量級的資料交換格式,而jackson是一個實作該功能的很好用的架構。
@com.fasterxml.jackson.annotation.jsonpropertyorder
指定序列化為json串時的各字段順序
@com.fasterxml.jackson.annotation.jsonignoreproperties
指定序列化為json串時排除的一些字段
例子:
@com.fasterxml.jackson.annotation.jsonproperty
字段在序列化時隻用指定的别名
com.fasterxml.jackson.databind.objectmapper
核心類。
com.fasterxml.jackson.databind.objectmapper.objectmapper()
objectmapper的構造函數,得到的對象是線程安全的,建議在程式中作為靜态成員直接用。
<t> t com.fasterxml.jackson.databind.objectmapper.readvalue(file src, class<t> valuetype)
從檔案中直接反序列化,當然,檔案中是json格式的字元串。
<t> t com.fasterxml.jackson.databind.objectmapper.readvalue(string content,class<t> valuetype)
從字元串中反序列化。
public void writevalue(file resultfile, object value)
将對象序列化到檔案中去。檔案是json格式的文本檔案。
string com.fasterxml.jackson.databind.objectmapper.writevalueasstring(object value)
将對象序列化成json格式的string。
<t> t com.fasterxml.jackson.databind.objectmapper.readvalue(url src,typereference valuetyperef)
反序列化時指定泛型參數。這個函數很有用,如:
objectmapper objectmapper=new objectmapper().enable(serializationfeature.indent_output);
此時序列化後的json帶縮進,友善肉眼看。
com.fasterxml.jackson.databind.jsonnode
json同xml類似,背後的資料結構都是樹。當我們不需要反序列化,直接周遊某些節點時,就可以用jsonnode。
jsonnode com.fasterxml.jackson.databind.objectmapper.readtree(string content)
讀取json,得到root節點。
jsonnode com.fasterxml.jackson.databind.jsonnode.get(string fieldname)
擷取指定的孩子node。若不存在傳回null。
string com.fasterxml.jackson.databind.jsonnode.astext()
将目前節點的内容以string格式輸出。
string com.fasterxml.jackson.databind.jsonnode.astext(string defaultvalue)
當指定的節點不存在時傳回形參中的預設值。
在以上依賴的基礎上添加:
com.fasterxml.jackson.dataformat.xml.xmlmapper
它是objectmapper類的子類,用于處理xml。
注意mapper.enable(serializationfeature.indent_output);是不支援的。
如果是list接口,預設實作類是arraylist。如果寫明了linkedlist等,那麼反序列化後就是linkedlist。