【问题标题】:Converting string to map in groovy在groovy中将字符串转换为映射
【发布时间】:2014-03-10 06:57:44
【问题描述】:

我是 groovy 的新手,这可能很简单。我有一个字符串,其格式与 groovy 的地图完全相同(地图中也有地图)。

我想要做的只是将字符串格式转换为 groovy 映射。 我尝试了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']
]

【问题讨论】:

    标签: groovy


    【解决方案1】:

    这可能不是一个简单或明确的解决方案,但它可以工作。

    首先关于“计算字符串太大”,Guilame 在类似的问题link 中给出了一个很好的答案。(第一个答案)。他指出,脚本评估不适合大数据处理,而且你很快就会遇到 JVM 限制,只要你使用一些 hack 或优化。

    您可以尝试拆分数据,但这也不是很好的解决方案。

    类似 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 解析器是非常快的。

    【讨论】:

    • 甜蜜。我知道必须有其他方式。谢谢。
    • 如何做相反的事情:Groovy Map --> 到 YAML 格式的字符串?
    • 嘿,@AbdennourTOUMI !通常,如果您想在 StackOverflow 上提问,最好的方法是创建一个单独的问题。回答你的问题,超级简单。您可以使用任何 YAML 序列化程序。例如 Jackson 的 YAML 模块 github.com/FasterXML/jackson-dataformats-text/tree/master/yaml 任何可以将对象转换为 YAML 的 Java 也适用于 Groovy。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2021-12-25
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多