我有一个返回 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 响应是否为空,但在数组上我不确定最好的是什么,但任何意见或建议将不胜感激。
所以如果你知道有多少个数组元素,就像这里的 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());
}
}
}