有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

返回带有帮助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

共 (3) 个答案

  1. # 1 楼答案

    默认情况下,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("+"));
    }
    
  2. # 2 楼答案

    这可能会帮助你:

    @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:

    @PostMapping("/reverse", produces = org.springframework.http.MediaType.TEXT_PLAIN)

  3. # 3 楼答案

    这将起作用:

    {
        @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))
    }