0

看到一个有趣的问题,不确定这与解析器或它假设的解析方式有关。任何帮助表示赞赏

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]]]*

解析的对象应该与字符串相同,但所有值都转换为映射的数组列表。

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

org.camunda.bpm.engine.ProcessEngineException:无法序列化变量“排除”中的对象:groovy.json.internal.LazyMap

4

1 回答 1

1

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

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

于 2020-11-12T02:27:20.663 回答