Java中HashMap與String字符串互轉的問題解決
背景:
當我們有需求將HashMap轉為Json格式的String時,切記不要使用HashMap的toString()方法,需要使用FastJson/Gson將HashMap轉為String。如果使用toString()方法進行轉換時,是無法將字符串再轉為HashMap的。它只會出現(xiàn)序列化報錯:

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"}

再往下執(zhí)行,通過Debug可見:

通過FastJson轉換成String的方式可以再將String轉為HashMap,但是通過toString轉換會報錯序列化問題。
原因:
HashMap toString源碼:

HashMap重寫了基類的toString方法,原理是通過for循環(huán)的方式將key與value之間用=連接后輸出,顯然這樣并不是一個Json串的格式。
JSON.toJSONString(Object object)源碼:

FastJson通過toJSONString方法可以將Object對象轉為Json格式的字符串,反之,可以通過序列化/反序列化的方式將Json字符串轉化為原對象。
到此這篇關于Java中HashMap與String字符串互轉的問題解決的文章就介紹到這了,更多相關HashMap與String字符串互轉內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java中Comparable與Comparator的區(qū)別解析
這篇文章主要介紹了Java中Comparable與Comparator的區(qū)別解析,實現(xiàn)Comparable接口,重寫compareTo方法,一般在實體類定義的時候就可以選擇實現(xiàn)該接口,提供一個默認的排序方式,供Arrays.sort和Collections.sort使用,需要的朋友可以參考下2024-01-01
springboot使用DynamicDataSource動態(tài)切換數據源的實現(xiàn)過程
這篇文章主要給大家介紹了關于springboot使用DynamicDataSource動態(tài)切換數據源的實現(xiàn)過程,Spring Boot應用中可以配置多個數據源,并根據注解靈活指定當前使用的數據源,需要的朋友可以參考下2023-08-08
Java設計模式之模板方法模式Template Method Pattern詳解
在我們實際開發(fā)中,如果一個方法極其復雜時,如果我們將所有的邏輯寫在一個方法中,那維護起來就很困難,要替換某些步驟時都要重新寫,這樣代碼的擴展性就很差,當遇到這種情況就要考慮今天的主角——模板方法模式2022-11-11

