我正在使用 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 数组。
这里的参考文档没有明确说明它,但它们强烈地传达了它只是可以发布的简单键/值对:https://docs.spring.io/spring-boot/docs/2.4.2/reference /htmlsingle/#生产就绪端点-自定义输入
发布:“1,2,3”作为一个简单的字符串在您自己的代码中解析/拆分可能会起作用。
(注意,我知道我发布这篇文章已经晚了 5 年,但以防万一它对其他人有帮助......)