我尝试了几种不同的方法来做到这一点。我有一个用 JSONSlurper 解析的 JSON 字符串,看起来像这样,我想用 key==StoreID2 获取值。
{
"EmailData": {
"MessageRecords": [
{
"To": "this@that.com",
"FieldData": [
{
"key": "StoreName",
"value": "Livonia"
},
{
"key": "StoreID2",
"value": "7017"
}
]
}
]
}
}
使用 JSONPath,我可以得到这样的值:$.EmailData.MessageRecords[0].FieldData[?(@.key=="StoreID2")].value
但看起来 Groovy 没有可用的 JSONPath,没有加载我试图避免的非本地库 (com.jayway.jsonpath.JsonPath.parse)。
这实际上是解决方案:
def jsonSlurper = new JsonSlurper();
def jsonObject = jsonSlurper.parseText(inputSB.toString());
logger.info("Store: " + jsonObject.EmailData.MessageRecords[0].FieldData.find{it.key=='StoreID2'}.value);
谢谢