Groovy: isn't there a stringToMap out of the box?

前端 未结 5 1248
独厮守ぢ
独厮守ぢ 2020-12-30 23:30

as a tcl developer starting with groovy, I am a little bit surprised about the list and map support in groovy. Maybe I am missing something here.

I am used to conver

5条回答
  •  执念已碎
    2020-12-31 00:22

    Not exactly native groovy, but useful for serializing to JSON:

    import groovy.json.JsonBuilder
    import groovy.json.JsonSlurper
    
    def map = ['a':2,'b':4 ]
    def s = new JsonBuilder(map).toString()
    println s
    
    assert map == new JsonSlurper().parseText(s)
    

    with meta-programming:

    import groovy.json.JsonBuilder
    import groovy.json.JsonSlurper
    
    Map.metaClass.toJson   = { new JsonBuilder(delegate).toString() }
    String.metaClass.toMap = { new JsonSlurper().parseText(delegate) }
    
    def map = ['a':2,'b':4 ]
    assert map.toJson() == '{"a":2,"b":4}'
    assert map.toJson().toMap() == map
    

    unfortunately, it's not possible to override the toString() method...

提交回复
热议问题