我正在尝试使用JsonSlurper解析具有重复对象的JSON响应,以与JDBC查询进行比较。但是,我只想比较对象中存在某些值的对象。
如果我收到这样的答复,我将如何仅分析该国家等于美国或加拿大的对象,从而忽略其他内容?
{
"info": [{
"name": "John Smith",
"phone": "2125557878",
"country": {
"value": "USA"
}
},
{
"name": "Jane Smith",
"phone": "2125551212",
"country": {
"value": "USA"
}
},
{
"name": "Bob Jones",
"phone": "4165558714",
"country": {
"value": "Canada"
}
},
{
"name": "George Tucker",
"phone": "4454547171",
"country": {
"value": "UK"
}
},
{
"name": "Jean Normand",
"phone": "4454547171",
"country": {
"value": "France"
}
}]
}
这就是我的常规:
def jsonResponse = context.expand('${RESTRequest#Response}')
def parsedJson = new JsonSlurper().parseText(jsonResponse)
def info = parsedJson.info
def jsonDataObjects = []
info.each { json ->
jsonDataObjects.add(Model.buildJSONData(json))
}
我正在构建需要与数据库进行比较的元素的集合。如何仅将info.country.value =美国或加拿大添加到该集合中?
我尝试像这样使用.findAll来测试是否可以仅通过以下国家之一对其进行过滤:
def info = parsedJson.info.country.findAll{it.value == "USA"}
但是,当我这样做时,仅保留value字段。我从解析中丢失了姓名和电话。
在此先感谢您的帮助。
答案 0 :(得分:0)
您尝试过
def info = parsedJson.info.findAll{it.country.value == "USA"}
?