json - Springboot Websockets:无法读取 JSON:无法从 START_ARRAY 令牌中反序列化“someclass”实例
问题描述
我正在尝试通过 SpringBoot 中的 websockets 发送 JSON 对象,但是在我的控制器上出现以下错误:
org.springframework.messaging.converter.MessageConversionException: Could not read JSON: Cannot deserialize instance of `com.websocket.demo.bean.MessageBean` out of START_ARRAY token
at [Source: (byte[])"[object Object]"; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.websocket.demo.bean.MessageBean` out of START_ARRAY token
at [Source: (byte[])"[object Object]"; line: 1, column: 1]
at org.springframework.messaging.converter.MappingJackson2MessageConverter.convertFromInternal(MappingJackson2MessageConverter.java:235) ~[spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.converter.AbstractMessageConverter.fromMessage(AbstractMessageConverter.java:181) ~[spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.converter.CompositeMessageConverter.fromMessage(CompositeMessageConverter.java:70) ~[spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.handler.annotation.support.PayloadArgumentResolver.resolveArgument(PayloadArgumentResolver.java:137) ~[spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:116) ~[spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:137) ~[spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:109) ~[spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMatch(AbstractMethodMessageHandler.java:517) [spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:495) [spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:88) [spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessageInternal(AbstractMethodMessageHandler.java:475) [spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessage(AbstractMethodMessageHandler.java:411) [spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:138) [spring-messaging-5.0.10.RELEASE.jar:5.0.10.RELEASE]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
这就是我的控制器的样子:
//This is intended to particular user;
@MessageMapping("/message")
public void processMessage( MessageBean message/* @DestinationVariable int id, @DestinationVariable int targetUserId*/ )
{
String channel = userService.generateConnectionString( message.getRecieverId() );
boolean isError = false;
if ( channel == null )
{
isError = true;
}
Map< String, Object > response = generateResponse( isError, channel, "Connection Request Sent Successfuly" );
messagingTemplate.convertAndSend( "/queue/greeting/" + message.getRecieverId(), response);
}
我尝试发送的请求对象:
$scope.sendMessage1 = function()
{
$scope.subscribe(1);
$scope.message = {};
$scope.message.senderId = 2;
$scope.message.recieverId = 1;
$scope.message.text = "Hello from user 2";
var sendObject = JSON.stringify($scope.message);
//sendObject = "{"senderId":1,"recieverId":2,"text":"Hello from user 1"}"
console.log(sendObject);
client.send("/app/message",{},sendObject);
};
有人能告诉我如何解决这个异常吗?
解决方案
推荐阅读
- javascript - 如何为我的 WebSocket 实现通道逻辑,包括我可以绑定到的事件?
- c++ - FIR 滤波器低通窗口
- algorithm - 带记忆的 3 向递归的 Big O 运行时分析
- db2 - 它无法在对 DB2 数据库的查询中计算 count(*)
- php - PHP文本文件自动下载已发送错误标头
- c++ - 在 std::set 上查找不区分大小写
- python - Python 搜索所有 List1 并匹配 List2[s]
- python - 如何在 python docker 容器中安装 Cython、cartopy 和 shapely?
- javascript - 无法使用 jquery 获取悬停的 svg 元素的 id
- pelican - 如何让 Pelican 使用 save_as 元数据来填充规范的 og:url 头部信息?