【问题标题】:Validate JSON response key label is present and value is not null in java验证 JSON 响应键标签是否存在且 Java 中的值不为空
【发布时间】:2021-02-03 18:31:46
【问题描述】:

我们有提供带有标签和值的响应数组的 API 下面是结构

"Name":"XYZ"
 "Resultid": [
        {
            "subject": "English",            
            "Marks": "79"
        },
        {
           "subject": "English",            
            "Marks": "79"

        }

我们需要检查 Subject 和 Marks 是否总是具有不为 null 的值。 下面是代码

List<Map<String, String>> allResultid = response.jsonPath().getList("Resultid");
        for (Map<String, String> map : allResultid) {
            
                
                assertEquals(map.get("subject"), not(blankOrNullString()));             
                assertEquals(map.get("Marks"), not(blankOrNullString()));
  }

出现预期错误和实际错误不匹配。请帮助检查值是否始终存在。

【问题讨论】:

  • 您好,欢迎您。请在代码突出显示区域之外使用“出现预期错误...”行。另外请通过缩进编辑示例代码,使其更易于阅读。

标签: java rest-assured


【解决方案1】:

试试isNull

if(!allResultid.isNull("subject")) {
    //Throw Error
}

或者你可以试试

if( allResultid.get("subject").equals(null) ){
        //Throw Error
}

【讨论】:

  • java中没有isNull,可以使用这个选项 assertEquals(map.get("subject"), not(blankOrNullString()));但仍然无法正常工作。 if(!allResultid.isEmpty) 不工作
  • 需要添加json.simple的正确依赖才能使用isNull()
【解决方案2】:

要在 java 中进行 null 检查,您可以使用 != null。因此,检查 null 然后执行下一个任务。您也可以通过类似的方式检查 Resultid 是否为 null。

List<Map<String, String>> allResultid = response.jsonPath().getList("Resultid");
for (Map<String, String> map : allResultid) {
            
   if( map.get("subject") != null){
      // do something
   }  
   ...
   if( map.get("Marks") != null){
      // do something
   }
             
}

【讨论】:

    【解决方案3】:

    我们只添加了一行来使用断言检查 null

    assertNotNull(map.get("subject"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多