Groovy:JSON解析

问题描述

看到一个有趣的问题,不确定这与解析器或其解析方式有关。感谢您的帮助

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-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的数组列表。

有人知道为什么这样生成对象吗?将其发送到金刚达时会抱怨

org.camunda.bpm.engine.ProcessEngineException:无法序列化变量'exclude'中的对象:groovy.json.internal.LazyMap

解决方法

使用 "editor.formatOnSaveMode": "modifications",-它会生成可序列化的标准JsonSlurperClassic()

如果要将对象转换回json,请使用Json output.toJson(obj)