返回带帮助的字符串JSON(Java和Spring)



我写的代码应该以相反的顺序返回字符串,但我只返回了数组,这是错误的

@PostMapping("/reverse")
public List<String> reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
.collect(Collectors.toList());
}

сURL命令

curl -H "Content-Type: application/json" -d "a1+a2+a3+a4" localhost:8080/hello/reverse

输出

["a4","a3","a2","a1"]

但这是错误的

需要像这样退回

curl -H "Content-Type: application/json" -d "a1+a2+a3+a4" localhost:8080/hello/reverse

不带数组和逗号的输出

a4+a3+a2+a1

默认情况下,Spring将使用Jackson将从端点返回的对象(至少在RestController的情况下(序列化为JSON。要克服这个问题,只需从端点返回一个String,并使用Collectors.joining("+")而不是Collectors.toList:

@PostMapping("/reverse")
public String reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return  IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
.collect(Collectors.joining("+"));
}

这可能会对您有所帮助:

@PostMapping("/reverse")
public String reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
.collect(Collectors.joining("+"));
}

如果你想以纯文本形式发送,那么用以下内容重新包装邮戳:

@PostMapping("/reverse",产生=org.springframework.http.MediaType.TEXT_PLAIN(

这将起作用:

{
@PostMapping("/reverse", produces = MediaType.TEXT_PLAIN)
public String reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return  IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
}

最新更新