好的,我已成功将列表转换为二维数组。唯一的问题是输出只对其进行一次索引,所以基本上如果我在每个列表中有10个元素要添加到二维数组,则二维数组将只有一个索引,其中包含' n'元素数量。
例如
我想
{{1,2,3}, {4,5,6}, {7,8,9}}
相反,它正在返回:
{1,2,3,4,5,6,7,8,9}
我接受了以下建议: Convert ArrayList into 2D array containing varying lengths of arrays
这是我的代码:
public static Object[][] getOrderCreateTestCases(){
List<List<String>> list = new ArrayList<>();
List<String> values = new ArrayList<>();
try {
JSONArray jObject = (JSONArray)getClient().sendGet(String.format("get_cases/12&suite_id=136"));
for(Object obj : jObject){
JSONObject jObj = (JSONObject)obj;
values.add(jObj.get("title").toString());
values.add(jObj.get("id").toString());
values.add(jObj.get("custom_order_type").toString());
values.add(jObj.get("custom_product_type").toString());
values.add(jObj.get("custom_free_shipping").toString());
values.add(jObj.get("custom_billing_country").toString());
values.add(jObj.get("custom_shipping_country").toString());
list.add(values);
for(int i=0; i<list.size(); i++){
valuesString = new Object[list.get(i).size()][];
List<String> row = list.get(i);
valuesString[i] = row.toArray(new String[row.size()]);
//System.out.print(valuesString[i]);
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (APIException e) {
e.printStackTrace();
}
return valuesString;
}
我正在使用DataProviders
和TestNG
,他们需要返回一个二维对象数组,我可以理解为什么。我正在解析JSON
数组(json-simple)中的某些数据,将其添加到列表中,然后转换为二维数组。因此,让我们说它从ID=5546
获取信息,然后是下一个id=4987
,下一个id=3847
等等。任何帮助将不胜感激
更新中...
好吧所以我想我明白为什么它做了它正在做的事情,但我仍然不知道如何解决这个问题。所以基本上它循环并开始新的数据集,然后它需要创建一个新的数组。
{{List1},{List2},{List3}}
答案 0 :(得分:1)
我认为getOrderCreateTestCases是您的数据提供者。 如果是这样,你可以这样试试吗?
public static Object[][] getOrderCreateTestCases() {
List<List<String>> list = new ArrayList<>();
List<String> values = new ArrayList<>();
try {
JSONArray jObject = (JSONArray) getClient().sendGet(
String.format("get_cases/12&suite_id=136"));
for (Object obj : jObject) {
try {
JSONObject jObj = (JSONObject) obj;
values.add(jObj.get("title").toString());
values.add(jObj.get("id").toString());
values.add(jObj.get("custom_order_type").toString());
values.add(jObj.get("custom_product_type").toString());
values.add(jObj.get("custom_free_shipping").toString());
values.add(jObj.get("custom_billing_country").toString());
values.add(jObj.get("custom_shipping_country").toString());
list.add(values);
} catch (Exception e) {
// Ignore
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (APIException e) {
e.printStackTrace();
}
valuesString = new Object[list.get(i).size()][];
for (int i = 0; i < list.size(); i++) {
List<String> row = list.get(i);
valuesString[i] = row.toArray(new String[row.size()]);
}
return valuesString;
}