2017-12-29 31 views
0

私はjHipsterで残りのapi webserviceを開発していますが、facebook graph api(例:http://myjhipster_web_service.com/api/user?fields=id,username)のようなフィールドフィルタを作っています。 問題は私がjackson Jsonのシリアル化を行う方法を知らないので、 ResponseBodyAdviceと私の自己、 のデータをシリアル化し、パフォーマンスの問題については、私は応答がシリアル化されないようにジャクソンのシリアル化を無効にしたいと考えています。 私の質問はJhipsterでジャクソン応答のシリアル化だけを無効にする方法ですか?作業を行うもう1つのソリューションはありますか?JHipster Spring json serializationを無効にするにはどうすればよいですか?

答えて

0

まずアイデア

あなたはRESTコントローラにリクエスト(選択したフィールド)と結果(ユーザー/ s)をラップすることができ、例えばGraphResponseのような特定のクラスです。

RESTコントローラのマッピングがGraphResponseを返した場合、Jacksonはそれをシリアル化しようとします。

public class GraphResponseSerializer extends JsonSerializer<GraphResponse> { 

@Override 
public void serialize(GraphResponse response, JsonGenerator jsonGenerator, 
    SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 
    // use jsonGenerator to write the JSON-stuff 
} 

}あなたが好きなアノテーションを使用しJacksonConfigurationかを経由してそのシリアライザを登録することができますいずれか

だから、あなたはそのクラスのために独自のseriablizerを追加することができます

@JsonSerialize(using = GraphResponseSerializer.class) 
public class GraphResponse { 
    // setter getter for "fields" 
    // setter getter for the actual response-object 
} 

第2の考え

豆/エンティティのシリアル化方法を変更するには、独自の​​(AFAIR)を追加します。

サードアイデア

あなたは、変換をオブジェクトへのhttp-出力およびHTTP-入力にオブジェクトを処理する、HttpMessageConverter自分自身を追加することができます。ジャクソンは、私たちがGraphQL(http://graphql.org/)を使用し、いくつかのプロジェクトで

第四アイデア

... MappingJackson2HttpMessageConverterが自動的に登録されているので、あなたが代わりにMappingJackson2HttpMessageConverterをオーバーライドして、直列化の変わり目に何かを実装することができ、実行されているのでここではグラフクエリを使用できます。これは本当に強力で、エンティティに基づいてすべてのフィルタリングなどを行います。 GraphQLのためのスプリングブートスターターもありますので、これをjhipsterプロジェクトに簡単に追加できます

関連する問題