使用jackson將Map轉成Json字串

2021-08-16 06:01:57 字數 1797 閱讀 3731

這裡主要是用

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...