如何动态地从数据 table 中检索数据?

How to retrieve data from data table dynamically?

我有这样的数据table:

|quotes|
|quote_a|
|quote_b|
|quote_c|

我想从数据 table 中检索所有这些引用并将它们传递到 json 请求正文中。现在我知道如何通过 data.get(0)data.get(1)data.get(2) 获取每个单独的项目,但这并不是真正的动态。

我想使用动态方式从数据 table 中检索所有引号,将它们放在一个逗号分隔的位置,并将所有引号放在正文中。

如何更改以下内容以实现此目的?

@When("^get quote)
    public void getQuotes(DataTable dataTable)
        throws Throwable
{

        List<List<String>> data = dataTable.raw();
        List<String> quotesList = new ArrayList<>();
        for (String quotesStr : data) {
            quotesList.add(quotesStr);
        }

        requestSpecificationFacade.body("{\n" +
           " \"quoteId\": " + data.get(0) + ", " + data.get(1) + ", " + data.get(2) +  "\n" +
                                            "}");


        }

如果我理解正确的话,您有一个字符串列表,并希望将其动态转换为以逗号(和 space)分隔的单个字符串。

您可以使用 Java 8String.join :

String output = String.join(", ", data);
requestSpecificationFacade.body("{\n" +
                   " \"quoteId\": " + output +  "\n" +
                                                    "}");

或使用 Java 7StringBuilder :

StringBuilder outputBuilder = new StringBuilder();
for (String quote : data) {
    outputBuilder.append(quote);
    outputBuilder.append(", ");
}
String output = outputBuilder.toString();

// Remove last comma
output = output.substring(0, output.length() - ", ".length());

requestSpecificationFacade.body("{\n" +
           " \"quoteId\": " + output +  "\n" +
                                            "}");

在这两种情况下 output 将 return quote_a, quote_b, quote_c