當我們有需求將HashMap轉為Json格式的String時,切記不要使用HashMap的toString()方法,需要使用FastJson/Gson將HashMap轉為String。如果使用toString()方法轉換時,是無法將字串再轉為HashMap的。它只會出現序列化錯誤:
demo程式碼:
HashMap<String, String> dataMap = new HashMap<>(4); dataMap.put("key1", "value1"); dataMap.put("key2", "value2"); dataMap.put("key3", "value3"); dataMap.put("key4", "value4"); String byToString = dataMap.toString(); String byJSONString = JSON.toJSONString(dataMap); System.out.println(byToString); System.out.println(byJSONString); HashMap<String ,String> hashMap = JSON.parseObject(byJSONString, HashMap.class); HashMap<String ,String> hashMap2 = JSON.parseObject(byToString, HashMap.class);
log:
{key1=value1, key2=value2, key3=value3, key4=value4} {"key1":"value1","key2":"value2","key3":"value3","key4":"value4"}
再往下執行,透過Debug可見:
透過FastJson轉換成String的方式可以再將String轉為HashMap,但是透過toString轉換會報錯序列化問題。
HashMap toString原始碼:
#HashMap重寫了基底類別的toString方法,原理是透過for迴圈的方式將key與value之間用=連接後輸出,顯然這樣並不是一個Json串的格式。
JSON.toJSONString(Object object)原始碼:
FastJson透過toJSONString方法可以將Object物件轉為Json格式的字串,反之,可以透過序列化/反序列化的方式將Json字串轉換為原始物件。
以上是如何在Java中實作HashMap與String字串之間的轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!