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