Java中HashMap与String字符串互转的问题解决
作者:爱叨叨的程序狗 时间:2023-12-21 11:11:28
背景:
当我们有需求将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字符串转化为原对象。
来源:https://blog.csdn.net/weixin_42313773/article/details/123588186
标签:HashMap,String,字符串,互转
0
投稿
猜你喜欢
Java 完美判断中文字符的方法
2023-01-07 19:14:54
C# 如何实现一个带通知的List<T>
2022-08-05 03:40:26
Android仿开心消消乐大树星星无限循环效果
2021-10-04 07:19:06
Android从网络中获得一张图片并显示在屏幕上的实例详解
2023-11-03 01:17:43
Androd自定义对话框Dialog视图及参数传递的实现方法
2023-04-26 05:19:08
利用Java8 Optional类优雅如何地解决空指针问题
2023-07-30 04:58:13
浅谈JVM垃圾回收之哪些对象可以被回收
2021-08-14 18:57:47
mybatis @InsertProvider报错问题及解决
2023-09-27 15:49:59
Mybatis中where标签与if标签结合使用详细说明
2021-07-27 08:15:53
Java实现添加,读取和删除Excel图片的方法详解
2023-11-27 06:29:33
java中不定长参数的实例用法
2021-06-17 02:49:35
SpringBoot用配置影响Bean加载@ConditionalOnProperty
2022-11-28 22:16:07
解读maven配置阿里云镜像问题
2023-02-28 11:57:56
剖析Java中线程编程的概念
2022-02-02 04:12:51
详解Java的MyBatis框架与Spring框架整合中的映射器注入
2021-06-02 00:32:31
在IntelliJ IDEA中多线程并发代码的调试方法详解
2022-01-09 03:05:45
浅谈Action+Service +Dao 功能
2023-01-04 13:44:20
spring项目中切面及AOP的使用方法
2021-12-01 21:11:29
Bean Searcher配合SpringBoot的使用详解
2022-06-21 23:49:00
Java线程休眠的5种方法
2022-02-21 04:49:48