我是groovy的新手,这可能非常微不足道。我有一个字符串,其格式与groovy的地图一样(地图中也有地图)。
我想做的只是将字符串格式转换为groovy map。
我尝试了this但我的字符串太大而无法计算Eval.me
。有没有其他方法可以做到这一点?
我的字符串格式有点像这样: -
[
'item1':[
[
'subitem11':1,
'subitem21':'name',
'subitem31':'nametwo'
],
[
'subitem21':'1',
'subitem22':'name2'
],
[
'subitem31':'2',
'subitem32':'name3'
]
],
'item2':'itemContent',
'item3':'itemContent3',
'item4':'itemContent4',
'item5':'itemContent5',
'item6':'itemContent6',
'item7':'itemContent7',
'item7':['subitem71', 'subitem72']
]
答案 0 :(得分:5)
这可能不是一个简单明了的解决方案,但它可以起作用。
首先,关于“计算字符串太大”,Guilame在类似问题link中给出了一个很好的答案。(第一个答案)。他指出,脚本评估不适合大数据处理,你很快就会通过使用一些黑客攻击或优化来达到JVM限制。
您可以尝试拆分数据,但这也不是很好的解决方案。
您的Groovy格式可以解释为YAML。
因此,您可以使用YAML解析器库从该字符串中提取数据。
即:
@Grab( 'org.yaml:snakeyaml:1.13' )
import org.yaml.snakeyaml.Yaml
def data = new Yaml().load( string )
此外,有几个YAML-JSON converters。如果您可以通过这种方式准备数据,Groovy新的JSON解析器非常快。