发布到 Spring Boot 2 自定义端点时出现 JSON 解码错误

问题描述 投票:0回答:1

我正在使用 Spring Boot 2.0.4.RELEASE 的自定义端点

我的自定义端点如下,

@Endpoint(id = "mycaches" ,enableByDefault=true)
@Component
public class CacheEndpoint {
@WriteOperation
    public String invalidateCacheKeys(@Selector String arg0,List<String> cacheList) {
        System.out.println(cacheList);
        return "Success";
    }
}

基本上,我想接收一组密钥并相应地处理它们。

当我尝试通过休息客户端提交请求时,如下所示

[
"1","2","3"
]

我收到以下错误。

Response status 400 with reason "Failed to read HTTP message"; nested exception is org.springframework.core.codec.DecodingException: JSON decoding error: Cannot deserialize instance of `java.util.LinkedHashMap` out of VALUE_STRING token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.LinkedHashMap` out of VALUE_STRING token
 at [Source: UNKNOWN; line: -1, column: -1]

如果我提交以下输入,

 {
    "cacheList": ["1","2","3"]
}

我收到以下错误,

 Response status 400 with reason "Failed to read HTTP message"; nested exception is org.springframework.core.codec.DecodingException: JSON decoding error: Cannot deserialize instance of `java.lang.String` out of VALUE_STRING token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of VALUE_STRING token
 at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: java.util.LinkedHashMap["cacheList"])

有人可以帮我解决这个问题吗?

json spring-boot jackson spring-boot-actuator
1个回答
0
投票

我也发现了同样的情况;我认为这里的问题是不支持 JSON 数组。

这里的参考文档没有明确说明它,但它们强烈地传达了它只是可以发布的简单键/值对:https://docs.spring.io/spring-boot/docs/2.4.2/reference /htmlsingle/#生产就绪端点-自定义输入

发布:“1,2,3”作为一个简单的字符串在您自己的代码中解析/拆分可能会起作用。

(注意,我知道我发布这篇文章已经晚了 5 年,但以防万一它对其他人有帮助......)

© www.soinside.com 2019 - 2024. All rights reserved.