Groovy: JSON 正在解析

Groovy: JSON Parsing

看到一个有趣的问题,不确定这是与解析器有关还是它假定的解析方式有关。感谢任何帮助

import groovy.json.JsonSlurper

def dMatch = '''[{"match":{"keyId":"A-102161-application"}},{"match":{"keyId":"A-102162-application"}},{"match":{"keyId":"A-102163-application"}},{"match":{"keyId":"A-102164-application"}},{"match":{"keyId":"A-102165-application"}}]'''

println "T1:: List: " + dMatch

def parser = new JsonSlurper()
def exclude = parser.parseText(dMatch)
println "T2:: Obj: " + exclude.toString()

println "----------------------------------------------------"

输出:

T1:: List: [{"match":{"keyId":"A-102161-application"}},
            {"match":{"keyId":"A-102162-application"}},
            {"match":{"keyId":"A-102163-application"}},
            {"match":{"keyId":"A-102164-application"}},
            {"match":{"keyId":"A-102165-application"}}]
T2:: Obj: *[[match:[keyId:A-102161-application]], 
            [match:[keyId:A-102162-application]],  
            [match:[keyId:A-102163-application]],  
            [match:[keyId:A-102164-application]],  
            [match:[keyId:A-102165-application]]]*

解析出来的对象应该和字符串一样,但是所有的值都被转换成了map的数组列表。

知道为什么会生成这样的对象吗?当它被发送到 camunda 时它抱怨

org.camunda.bpm.engine.ProcessEngineException: Cannot serialize object in variable 'exclude': groovy.json.internal.LazyMap

使用 JsonSlurperClassic() - 它生成可序列化的标准 HashMap

如果你想将对象转换回 json 使用 Json output.toJson(obj)