Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ObjectMapper无法正确反序列化作为AMQP消息体接收的json_Java_Spring Amqp_Objectmapper - Fatal编程技术网

Java ObjectMapper无法正确反序列化作为AMQP消息体接收的json

Java ObjectMapper无法正确反序列化作为AMQP消息体接收的json,java,spring-amqp,objectmapper,Java,Spring Amqp,Objectmapper,我创建了用于将消息反序列化为某种自定义消息类型的转换器 这是我在队列中发送的消息: { “id”:“851e04e5-356f-49a6-b6e2-93102dc7a642”, “导出状态”:“已导出” } 这是转换器的代码 公共类MergePatchAMQPMessageConverter实现MessageConverter{ @凌驾 公共消息到消息(对象o,MessageProperties MessageProperties)抛出MessageConversionException{ 抛出

我创建了用于将消息反序列化为某种自定义消息类型的转换器

这是我在队列中发送的消息: { “id”:“851e04e5-356f-49a6-b6e2-93102dc7a642”, “导出状态”:“已导出” }

这是转换器的代码

公共类MergePatchAMQPMessageConverter实现MessageConverter{
@凌驾
公共消息到消息(对象o,MessageProperties MessageProperties)抛出MessageConversionException{
抛出新的UnsupportedOperationException();
}
@凌驾
来自Message(Message Message)的public updateConfiguration命令引发MessageConversionException{
ObjectMapper ObjectMapper=新的ObjectMapper();
JsonNode JsonNode=null;
试一试{
jsonNode=objectMapper.readTree(message.getBody());
}捕获(IOE异常){
//待办事项
}
JsonNode id=JsonNode.get(“id”);
if(id==null){
抛出新的非法状态异常();
}
JsonMergePatch patch=null;
try(JsonReader reader=Json.createReader(新的ByteArrayInputStream(message.getBody())){
patch=Json.createMergePatch(reader.readValue());
}捕获(例外e){
抛出新的MessageConversionException(e.getMessage(),e);
}
返回新的UpdateConfigurationCommand(UUID.fromString(id.asText()),补丁);
}
}
当转换器在消息正文中收到此消息时,ObjectMapper无法对其进行反序列化。结果JsonNode的大小为0。当我将此消息作为常规字符串值发送给ObjectMapper时,它会正常工作


原因是什么?

您是否尝试调试代码并查看消息正文的实际内容?是的,它看起来像常规json