• 技术文章 >Java >java教程

    如何在Java中实现HashMap与String字符串之间的转换?

    王林王林2023-04-21 12:52:17转载19

    背景:

    当我们有需求将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中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:HashMap Java string
    上一篇:Java实现冒泡排序的方法及示例 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Java数组元素求和方式• 要注意哪些问题:使用Java函数式接口的注意事项• Java中如何重写findClass()方法?• 使用Java和Vue构建个人博客的步骤• 如何在Java数组中查找元素的位置?
    1/1

    PHP中文网