我期望读取 where(key = Canonical message) 的值 值格式是许多字段的组合,我希望在下面提到的有效负载部分中读取“casetTitle”值并设置属性 使用 JsonSlurper()
Input JsoN
{
"Id": "db338737-af14-ef11-9f8a-000d3aad8ef7",
"InputParameters": [
{
"key": "CanonicalMessage",
"value": "{\"ActivityId\":\"9f368268\",\"Payload\":{\"CaseTitle\":\"Material Description 000\",\"CustomerAssetNumber\":\"104628\"}}"
}
{
"key": "transactionlogid",
"value": "9f36828e9"
}
]
}
如何通过使用 JsonSlurper() 来实现这一点?
非常感谢
您真诚的 萨提什
它看起来像下面这样。 请记住,我必须转义引号转义序列,因为我将其内联到字符串文字中。 否则,语言将被解释为 \" -> " 并创建无效的 JSON。 如果您从输入中读取此内容,则不需要这样做。 这只是这个例子的一个产物;不是现实世界的代码。
import groovy.json.*
def slurper = new JsonSlurper()
def json = slurper.parseText("""
{
"Id": "db338737-af14-ef11-9f8a-000d3aad8ef7",
"InputParameters": [
{
"key": "CanonicalMessage",
"value": "{\\"ActivityId\\":\\"9f368268\\",\\"Payload\\":{\\"CaseTitle\\":\\"Material Description 000\\",\\"CustomerAssetNumber\\":\\"104628\\"}}"
},
{
"key": "transactionlogid",
"value": "9f36828e9"
}
]
}
""")
List<String> caseTitles = json.InputParameters
.findAll { it.key == "CanonicalMessage" }
.collect {
def innerJson = slurper.parseText( it.value )
innerJson.Payload.CaseTitle
}
println(caseTitles)
这是可执行的并且有效。