2017-06-26 8 views
0

私はジャクソンを使用して、私の春ブートプロジェクトに冬眠:ジャクソンは、Facebookがウェブフックデシリアライズすることはできません

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()); 

を私は新しいメッセージに関する情報をreciveするためにFacebookのウェブフックを使用メッセンジャーで:

public ResponseEntity<Void> handleCallback(@RequestBody final String payload, 
     @RequestHeader(SIGNATURE_HEADER_NAME) final String signature) { 

payloadパラメータは文字列ですが、jacksonコンバータではできませんそれをデシリアライズ:

wsmsDefaultHandlerExceptionResolverを:org.springframework.http.converter.HttpMessageNotReadableException:HTTPメッセージを読み取ることができませんでした文書を読み取れませんでした:START_OBJECTの外でトークン をjava.lang.Stringでインスタンスをデシリアライズできません[ソース:[email protected];行:1、列:1];ネストされた例外はcom.fasterxml.jackson.databind.JsonMappingExceptionです。:[ソース:[email protected];でSTART_OBJECTトークン からjava.lang.Stringのインスタンスを逆シリアル化できません。行:1、列:1]

私はJacksonMapperを削除しようとしましたし、その後の作業をウェブフックが、私のデータベースにはありませんしました:

org.hibernate.LazyInitializationException:プロキシを初期化できませんでした - noセッション

ジャクソン&休止状態でfacebook webhooksをデシリアライズする方法がありますか?

答えて

0

POSTリクエストのハンドラメソッドがあり、指定されたクラスのオブジェクトにリクエストのペイロードをデシリアライズするようにしたいと思います。たとえば、Messageです。それぞれの構造が一致した場合

@RequestBody final Message payload 

ジャクソン(あなたはジャクソンのために追加の設定が必要になる場合があります)、ペイロードのうち、Messageオブジェクトを作成します。このような場合、あなたはhandleCallback引数のこの構文は必要です。

現在の構文では、JacksonはJSONペイロードをStringオブジェクトにデシリアライズしようとしています。ペイロードはおそらくそれより複雑です。

関連する問題