从字符串"[a:12,b:[a:b,c:d]]"转换地图对象



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()检索了提到的映射,我无法通过回答的方法解析,因为我的字符串实际上包含日期字符串,我需要它回到日期对象。所以很难解析整个字符串

您可以将此字符串转换为类似json的格式,并对其进行简单解析:

String s = "[a:12,b:[a:b,c:d]]";
def result = new JsonSlurper().setType(JsonParserType.LAX).parseText(s.replaceAll('\[', '{').replaceAll('\]', '}'))

我有一种方法可以根据您的实际数据工作。示例数据的问题在于,您提供了未加引号的字符串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解析为作用域中未定义的变量。

最新更新