1

我有一个简单的 rest get 动词,它读取一个 csv 文件并输出一些数据。通过 System.out.println 将数据发送到控制台效果很好。

  • 代码:“英文名称”
  • 广告:安道尔
  • AE:“阿拉伯联合酋长国”
  • AF:阿富汗
  • AG:“安提瓜和巴布达”
  • AI:安圭拉
  • AL:阿尔巴尼亚

现在,当我通过休息调用将相同的数据输出到浏览器时,我得到以下信息。

  • [代码:“英文名称”
  • , AD:安道尔
  • , AE:“阿拉伯联合酋长国”
  • , AF:阿富汗
  • , AG:"安提瓜和巴布达"
  • , AI:安圭拉
  • , AL:阿尔巴尼亚
  • ]

多余的字符从哪里来?这是我的课。

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getAllCountriesAndCodes() {
    InputStream inputStream = getClass().getClassLoader().getResourceAsStream("countryandcode.csv");

    String line;
    String cvsSplitBy = ",";
    List<String> myList = new ArrayList<>();
    BufferedReader bufferedReader = null;
    try {
        bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        while ((line = bufferedReader.readLine()) != null) {
            String[] country = line.split(cvsSplitBy);
            myList.add(country[0] + ":" + country[1] + System.getProperty("line.separator"));
            System.out.println(country[0] + ":" + country[1]);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (bufferedReader != null) {
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    return String.valueOf(myList);
}

我正在使用 Java 7、Jersey 2.0 和 IntelliJ 12,如果这有所作为的话。当我快速观看 myList 时,数据看起来是正确的。其他东西正在格式化吗?我将它打包在一个 war 文件中并将其部署到 Tomcat 7。

谢谢!

4

1 回答 1

1

myList 是一种类型,List<String>您正在使用它返回它,String.valueOf(myList); 这会将您 myList 转换为一种形式 -

[Code:"English Name"
, AD:Andorra
, AE:"United Arab Emirates"
, AF:Afghanistan
, AG:"Antigua and Barbuda"
, AI:Anguilla
, AL:Albania
]

而是尝试用String.valueOf(myList);以下内容替换您的,

StringBuilder sb = new StringBuilder();

for (String text : myList) {
   sb.append(text);
}

return sb.toString();

检查此链接- ArrayList 继承 AbstractList 并且 AbstractList 继承 AbstractCollection ,因此您可以通过这种方式获得 toString() 。

于 2013-07-06T04:31:34.197 回答