首頁  >  文章  >  Java  >  如何在Java中實作HashMap與String字串之間的轉換?

如何在Java中實作HashMap與String字串之間的轉換?

王林
王林轉載
2023-04-21 12:52:172938瀏覽

背景:

當我們有需求將HashMap轉為Json格式的String時,切記不要使用HashMap的toString()方法,需要使用FastJson/Gson將HashMap轉為String。如果使用toString()方法轉換時,是無法將字串再轉為HashMap的。它只會出現序列化錯誤:

如何在Java中實作HashMap與String字串之間的轉換?

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

如何在Java中實作HashMap與String字串之間的轉換?

再往下執行,透過Debug可見:

如何在Java中實作HashMap與String字串之間的轉換?

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

原因:

HashMap toString原始碼:

如何在Java中實作HashMap與String字串之間的轉換?

#HashMap重寫了基底類別的toString方法,原理是透過for迴圈的方式將key與value之間用=連接後輸出,顯然這樣並不是一個Json串的格式。

JSON.toJSONString(Object object)原始碼:

如何在Java中實作HashMap與String字串之間的轉換?

FastJson透過toJSONString方法可以將Object物件轉為Json格式的字串,反之,可以透過序列化/反序列化的方式將Json字串轉換為原始物件。

以上是如何在Java中實作HashMap與String字串之間的轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除