這裡主要是用
com
.fasterxml
.jackson
.databind
@suppresswarnings("resource")
public string writevalueasstring(object value) throws jsonprocessingexception
例如:
map
map = new hashmap();
map.put("b", "b");
map.put("a", "a");
******dateformat sdf = new ******dateformat("yyyy-mm-dd hh:mm:ss");
map.put("occurtime", sdf.format(new date()));
system.out.println("print map: " + map);
system.out.println("print json: " + jsonstr);
這裡生成的json string 如果對欄位順序有要求,那就不能用hashmap了,比如以b,a,occurtime的順序put到map,結果可能會這樣
print map:
print json:
所以jackson對map的遍歷,應該是跟map儲存資料的方式有關,那麼順序改變也就很正常了。
看看writevalueasstring這個方法:
protected final void _configandwritevalue(jsongenerator g, object value)
throws ioexception
try catch (exception e)
g.close();
}
裡面用到_serializerprovider(cfg).serializevalue(g, value);對物件進行序列化操作,一直跟蹤進去:
到了class mapserializer的
很明顯,構造json串時是用entryset遍歷的,所以構造的順序與遍歷map的順序一致
試試linkedhashmap:
map
map = new linkedhashmap();
linkedhashmap按照put的順序儲存
再試試treemap:
map
map = new treemap();
print map:
print json:
treemap是有序的,這時構造出來的json也是有序的了。
所以jackson構造map對應的json串,跟map本身儲存資料的方式有關,仍然是用entryset遍歷的。
用Gson,將json串直接轉成map
在scala專案開發的工程中,可能會經常有需要解析json串的應用場景。在這裡介紹一種使用gson 將json直接轉成map的方法。首先,需要新增gson的依賴 com.google.code.gson gson 2.8.5 演示 def test unit val jsonarray json.p...
利用反射將實體類物件轉成Map
在我們程式設計的過程中往往會用到反射,利用反射有時候可以更容易的做到一些事情,下面就說乙個反射的實際應用場景吧,就是將object轉化成乙個map,object裡的屬性名對應map的key,object裡的屬性值對應map的value public static mapobjecttomap obj...
使用Python將HTML轉成PDF
主要使用的是wkhtmltopdf的python封裝 pdfkit 1.install python pdfkit pip install pdfkit2.install wkhtmltopdf sudo apt get install wkhtmltopdfsudo yum intsall wkh...