我正尝试将一个数组作为API GET请求的响应展示出来。这个数组的内容来源于一个shell脚本的输出。然而,当我尝试使用响应实体(ResponseEntity)来显示这个数组时,每个数组行都会额外添加冒号和斜杠,我不清楚这是为什么。
Java代码片段如下:
@GetMapping("/awsregions/getList")
@ResponseBody
public ResponseEntity<AwsRegionList> getAllAWSRegions() throws Exception {
String prochelmline;
List<String> regions = new ArrayList<>();
AwsRegionList reglist = new AwsRegionList();
Process proc = Runtime.getRuntime().exec("/app/awsregions.sh");
proc.waitFor();
try (BufferedReader reader1 = new BufferedReader(new InputStreamReader(proc.getInputStream()))) {
while ((prochelmline = reader1.readLine()) != null) {
regions.add(prochelmline);
}
}
reglist.setListOfAwsRegion(regions);
return ResponseEntity.ok(reglist);
}
模型类定义如下:
public class AwsRegionList {
private List<String> listOfAwsRegion;
public List<String> getListOfAwsRegion() {
return listOfAwsRegion;
}
public void setListOfAwsRegion(List<String> listOfAwsRegion) {
this.listOfAwsRegion = listOfAwsRegion;
}
}
我的shell脚本内容是这样的:
aws ec2 describe-regions --all-regions --no-cli-pager | grep RegionName | cut -b 27-50 | sed 's/.$//'
它直接打印出的结果是不包含任何额外的引号或反斜杠的,比如:
"ap-south-2"
"ap-south-1"
...
但通过API GET调用在Swagger中返回的数据却是这样的,每条记录前后都多了不必要的转义字符:
{
"listOfAwsRegion": [
"\"ap-south-2\"",
"\"ap-south-1\"",
...
]
}
我不明白这些额外的双引号和反斜杠是如何被添加进去的。因为在原始的shell脚本输出中,并没有这些东西。是否可以使用Gson库来进行更美观的打印?如果有示例代码就更好了。