java(groovy)中是否有任何转换字符串的方法,如
String s = "[a:12,b:[a:b,c:d]]";
到具有键值对的Map对象。
更新:它在某种程度上类似于问题 Groovy:是不是开箱即用了stringToMap?(Groovy: isn't there a stringToMap out of the box?)。区别在于键是字符串类型,这使得更容易解析,因为我通过执行.toString()
检索了提到的地图我无法通过应答方法解析,因为我的字符串实际上包含我需要它的日期字符串回溯对象。因此很难解析整个字符串。
答案 0 :(得分:1)
您可以将此字符串转换为类似JSON的格式,并简单地解析它:
String s = "[a:12,b:[a:b,c:d]]";
def result = new JsonSlurper().setType(JsonParserType.LAX).parseText(s.replaceAll('\\[', '{').replaceAll('\\]', '}'))
答案 1 :(得分:1)
我的方法可能有效,具体取决于您的实际数据。您的示例数据的问题在于您提供了未加引号的字符串b和d作为结构的一部分:
String s = "[a:12,b:[a:b,c:d]]";
如果您拥有的实际上是
String s = "[a:12,b:[a:'b',c:'d']]";
或
String s = "[a:12,b:[a:1,c:2]]";
然后你可以这样做:
def map=Eval.me(s)
但是,eval尝试将b和d解析为范围中未定义的变量。