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?
一般来说,不会。
Map<K,V>.toString()
实现依赖于K.toString()
和V.toString()
实现。这些都是不可逆的,这意味着Map
实现两者都不能。即使在
Map<String,String>
在这种情况下,渲染的 map 不会使用任何形式的转义来处理边缘情况...例如包含逗号、等号或大括号的键或值。
在有限的情况下1,您可以实现自己的解析器,或者可以使用此处描述的方法之一:
但是,使用 toString()
是一个坏主意如果您还需要可逆的转换。 toString()
方法契约及其实现并不是为此目的而设计的。它们主要设计用于调试。
1 - 例如,如果您可以假设 K
和V
是String
,没有null
键或值,并且两者都不会包含尴尬的字符。
2 - 注意:使用 split
的简单解决方案等等通常无法处理嵌套 map 。
关于java - 我正在使用 toString() 方法将 map 转换为字符串。有没有办法可以将字符串转换回 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45428154/