服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java中HashMap与String字符串互转的问题解决

Java中HashMap与String字符串互转的问题解决

2022-10-18 15:14爱叨叨的程序狗 Java教程

本文介绍了Java中HashMap与String字符串互转的问题解决,当我们有需求将HashMap转为Json格式的String时,需要使用FastJson/Gson将HashMap转为String,感兴趣的可以了解一下

背景

当我们有需求将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字符串互转的问题解决的文章就介绍到这了,更多相关HashMap与String字符串互转内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_42313773/article/details/123588186

延伸 · 阅读

精彩推荐