我想在json响应中断言一个键。
响应
{
"availableRooms": [
{
"roomId": 2,
"exchangeEmailId": null,
"roomName": "Room 1",
"floor": 0,
"groupID": 3,
"defaultCapacity": 8,
"maxCapacity": 8,
"attributes": [
{
"attributeID": 170,
"displayName": "Video Conference Unit",
"abbreviation": "VCU"
}
],
"externalRoomEmail": "vinay.jaiswal@condecosoftware.com"
}
],
"availableRoomsForAllDates": {},
"callResponse": {
"message": null,
"customResponseCode": null
}
}Groovy
import groovy.json.JsonSlurper
def ResponseMessage = messageExchange.response.responseContent
def jsonSlurper = new JsonSlurper().parseText(ResponseMessage)
if( jsonSlurper.containsKey( 'externalRoomEmail' ) )
{
log.info 'a'
}
else
{
log.info 'b'
}输出
Tue Nov 24 20:24:35 IST 2020:INFO:b有没有内置的方法?
如果我尝试jsonSlurper.availableRooms.externalRoomEmail,那么它会给我null,但是测试用例是通过的。
如果找不到钥匙,我希望它能打破测试箱。
发布于 2020-11-27 10:55:56
<编辑-重新阅读你的问题,回答调整后的accordingly>
首先,我将调用已解析的json json而不是jsonSlurper,因为slurper是用于解析json的groovy类,命名数据为"slurper“在概念上是很混乱的。
所以您的问题是json.availableRooms返回一个列表。换句话说,您必须使用以下内容:
if(json.availableRooms.first().externalRoomEmail) {
...
} else {
...
}以检查第一个房间是否定义了externalRoomEmail。
这取决于你想做什么。假设您想要查看是否有任何可用的房间定义了externalRoomEmail,那么您将执行以下操作:
def roomsWithEmails = json.availableRooms.findAll { it.externalRoomEmail }
if (roomsWithEmails) {
roomsWithEmails.each { room ->
println "room ${room.roomName} has external email ${room.externalRoomEmail}"
}
} else { // no rooms with externalRoomEmail
// do something else
} https://stackoverflow.com/questions/65024129
复制相似问题