我在我的spring-boot项目中使用Jackson和hibernate:
private MappingJackson2HttpMessageConverter jacksonMessageConverter() {
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Hibernate4Module());
messageConverter.setObjectMapper(mapper);
return messageConverter;
}
并将其添加到转换器:
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jacksonMessageConverter());
我使用facebook webhooks来回复有关messenger中新消息的信息:
public ResponseEntity<Void> handleCallback(@RequestBody final String payload,
@RequestHeader(SIGNATURE_HEADER_NAME) final String signature) {
payload参数是一个字符串,但是jackson转换器无法反序列化它:
w.s.m.s.DefaultHandlerExceptionResolver:无法读取HTTP消息:org.springframework.http.converter.HttpMessageNotReadableException:无法读取文档:无法从START_OBJECT令牌中反序列化java.lang.String的实例 在[来源:java.io.PushbackInputStream@60a118dc; line:1,column:1];嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:无法从START_OBJECT标记中反序列化java.lang.String的实例 在[来源:java.io.PushbackInputStream@60a118dc; line:1,column:1]
我试图删除JacksonMapper然后webhooks工作,但我的数据库没有:
org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话
您是否知道如何使用jackson&amp; amp;来反序化facebook webhooks冬眠?
答案 0 :(得分:0)
我知道您有POST
个请求的处理程序方法,并且您希望使用spring-boot将请求的有效负载反序列化为指定类的对象,例如Message
。在这种情况下,您需要handleCallback
参数的语法:
@RequestBody final Message payload
如果相应的结构匹配(杰克逊可能需要额外的配置),杰克逊将从有效负载中创建一个Message
对象。
使用当前语法,Jackson尝试将JSON有效负载反序列化为String
对象,并且可能有效负载比这更复杂。