从列表返回二维数组不能正确索引

时间:2014-10-26 21:54:30

标签: java selenium testng

好的,我已成功将列表转换为二维数组。唯一的问题是输出只对其进行一次索引,所以基本上如果我在每个列表中有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;
}

我正在使用DataProvidersTestNG,他们需要返回一个二维对象数组,我可以理解为什么。我正在解析JSON数组(json-simple)中的某些数据,将其添加到列表中,然后转换为二维数组。因此,让我们说它从ID=5546获取信息,然后是下一个id=4987,下一个id=3847等等。任何帮助将不胜感激

更新中...

好吧所以我想我明白为什么它做了它正在做的事情,但我仍然不知道如何解决这个问题。所以基本上它循环并开始新的数据集,然后它需要创建一个新的数组。

{{List1},{List2},{List3}}

1 个答案:

答案 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;
}