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

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

王林
發布: 2023-04-21 12:52:17
轉載
3020 人瀏覽過

背景:

當我們有需求將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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板