Java中HashMap与String字符串互转的问题解决
背景:
当我们有需求将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字符串互转的问题解决的文章就介绍到这了,更多相关HashMap与String字符串互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中Comparable与Comparator的区别解析
这篇文章主要介绍了Java中Comparable与Comparator的区别解析,实现Comparable接口,重写compareTo方法,一般在实体类定义的时候就可以选择实现该接口,提供一个默认的排序方式,供Arrays.sort和Collections.sort使用,需要的朋友可以参考下2024-01-01
springboot使用DynamicDataSource动态切换数据源的实现过程
这篇文章主要给大家介绍了关于springboot使用DynamicDataSource动态切换数据源的实现过程,Spring Boot应用中可以配置多个数据源,并根据注解灵活指定当前使用的数据源,需要的朋友可以参考下2023-08-08
Java设计模式之模板方法模式Template Method Pattern详解
在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式2022-11-11


最新评论