0

我创建了一个 REST Web 服务。

我在响应中有一个嵌套列表,每个列表中有 5 个键值关联。我只想检查每个值是否具有正确的格式(布尔值、字符串或整数)。

所以这是嵌套列表。

{"marches": [
      {
      "id": 13,
      "libelle": "CAS",
      "libelleSite": "USA",
      "siteId": 1,
      "right": false,
      "active": true
   },
      {
      "id": 21,
      "libelle": "MQS",
      "libelleSite": "Spain",
      "siteId": 1,
      "right": false,
      "active": true
   },
      {
      "id": 1,
      "libelle": "ASCV",
      "libelleSite": "Italy",
      "siteId": 1,
      "right": false,
      "active": true
   }]
}

我使用 JsonSlurper 类来读取 groovy 响应。

import groovy.json.JsonSlurper
def responseMessage = messageExchange.response.responseContent
def json = new JsonSlurper().parseText(responseMessage)

通过以下循环,我可以获取每个列表块。

marches.each { n ->
    log.info "Nested $n \n"
}

例如,我想检查与键“id”、“13”关联的值是否是整数等等。

4

1 回答 1

2

您快到了。在 , 内部.each表示it嵌套对象:

json.marches.each { 
  assert it.id instanceof Integer  // one way to do it

  //another way
  if( !(it.libelle instanceof String) ){
    log.info "${it.id} has bad libelle"
  } 

  //one more way
  return (it.libelleSite instanceof String) &&
     (it.siteId instanceof Integer) && (it.right instanceof Boolean)
}

如果您不关心细节并且只想确保它们都很好,您也可以使用.every

assert json.marches.every {
    it.id instanceof Integer &&
    it.libelle instanceof String &&
    it.libelleSite instanceof String &&
    it.active instanceof Boolean  //...and so on
}
于 2019-05-28T15:46:57.610 回答