问题描述
看到一个有趣的问题,不确定这与解析器或其解析方式有关。感谢您的帮助
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)