多个 Java IF 语句使用 Apache Poi XSSF 编写对 Excel 的 JSON 响应

问题描述 投票:0回答:1

我有一个返回 JSON 响应的测试,如果响应可能根据测试返回空值,例如响应路径看起来像

data.test1[0]

data.test1[1]

data.test1[2]

data.test2[0]

data.test2[0]

data.test2[0]

返回的响应非常大,几乎有 400 行数据。测试

所以我所做的是一个基本的 if 来检查响应是否不为 null 然后 wright to excel。这是有效的,但它使测试非常慢。

如果声明有效:

if(response.path("data.test1[0]" )!= null){    
XSSFCell dataTest1 = rowResults.createCell(1);
   dataTest1.setCellValue(response.path("data.test1[0]").toString());
}
if(response.path("data.test1[1]" )!= null){    
XSSFCell dataTest2 = rowResults.createCell(2);
  dataTest1.setCellValue(response.path("data.test1[1]").toString());
}

我为每个响应数据多次创建了这个。但是就像我说的那样,这使它变得非常慢我什至尝试更改为 SXSSF Apache POI 但没有任何区别。

我也尝试过捆绑 IF 语句但是我得到了空指针异常我尝试了下面的

if(response.path("data.test1" )!= null){    
XSSFCell dataTest1 = rowResults.createCell(1);
 dataTest1.setCellValue(response.path("data.test1[0]").toString());

XSSFCell dataTest2 = rowResults.createCell(2); 
dataTest1.setCellValue(response.path("data.test1[1]").toString());
}

您是否有任何建议来检查 JSON 响应是否为空,但在数组上我不确定最好的是什么,但任何意见或建议将不胜感激。

java json if-statement testng rest-assured
1个回答
0
投票

所以如果你知道有多少个数组元素,就像这里的 data.test1[0]、data.test1[1]、data.test1[2] 它表明有 3 个元素。你可以做的是运行一个循环来检查,比如,

for(int i=0;i<3;i++){
    if(response.path("data.test1["+Integer.toString(i)+"]")!= null){
        rowResults.createCell(i+1).setCellValue(response.path("data.test1["+Integer.toString(i)+"]").toString());
   }
}

如果你知道有多少测试,data.test1[0]、data.test1[1]、data.test1[2]、data.test2[0]、data.test2[1]、data.test2[2 ]],那么你可以使用嵌套循环,比如,

int count=1;
for (int i = 1; i <= 2; i++) {
    for (int j = 0; j < 3; j++) {
        if (response.path("data.test"+Integer.toString(i)+"[" + Integer.toString(j) + "]") != null) {
            rowResults.createCell(count++).setCellValue(response.path("data.test"+Integer.toString(i)+"[" + Integer.toString(j) + "]").toString());
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.