java - 我正在使用 toString() 方法将 map 转换为字符串。有没有办法可以将字符串转换回 map ?

标签 java string hashmap maps

Map<String,Object> inputMap=new HashMap<String,Object>();

    inputMap.put("a","abc");
    inputMap.put("b","bcd");
    inputMap.put("c","cde");

 HashMap<String,String> subMap=new HashMap<String,String>();
   subMap.put("x","xyz");
    subMap.put("z","klm")

    inputMap.put("d",subMap);




String output=inputMap.toString();
System.out.println(output);


{a=abc,b=bcd,c=cde,d={x=xyz,z=klm}}

输出为:{a=abc,b=bcd,c=cde,d={x=xyz,z=klm}};

如何将输出转换回 map

提前致谢。

最佳答案

Is there a way I can convert the string back to map?

一般来说,不会。

  1. Map<K,V>.toString()实现依赖于K.toString()V.toString()实现。这些都是不可逆的,这意味着 Map实现两者都不能。

  2. 即使在 Map<String,String>在这种情况下,渲染的 map 不会使用任何形式的转义来处理边缘情况...例如包含逗号、等号或大括号的键或值。

在有限的情况下1,您可以实现自己的解析器,或者可以使用此处描述的方法之一:

但是,使用 toString() 是一个坏主意如果您还需要可逆的转换。 toString()方法契约及其实现并不是为此目的而设计的。它们主要设计用于调试。

<小时/>

1 - 例如,如果您可以假设 KVString ,没有null键或值,并且两者都不会包含尴尬的字符。

2 - 注意:使用 split 的简单解决方案等等通常无法处理嵌套 map 。

关于java - 我正在使用 toString() 方法将 map 转换为字符串。有没有办法可以将字符串转换回 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45428154/

相关文章:

java - Android Studio 从 json 对象提取数据不起作用。

java - 阐明 Java 实现 HashSet/HashMap 背后的事实

Java JButton - MouseMotionListener ( MouseMoved ) 鼠标悬停效果

java - 无法在 openGL 中渲染形状

java - 读取包含字符串和整数的文本文件并根据值对其进行测试(Java)

c - C语言char数组初始化中的大括号

javascript - 在 javascript 中渲染 Hash 的模板是什么

java - 从 intellij 中的 maven 项目创建 jar

Java Regex 匹配器跳过匹配项

Java正则表达式不一致组