2016-04-01 11 views
1

こんにちは私の会社の共通のフレームワークから取得したユーザーオブジェクトのRestサービスを作成しています。jackson mixins throwing stackoverflow error

ユーザーuserobj = commonframework.getuser(userid); //ユーザは、私はcommonframeworkからコードを変更することはできません 「)getSomeflag(」問題は、共通フレームワークからユーザオブジェクトが「isSomeflag()」などの文字列フィールドの2つのゲッターを持つオブジェクトを有するインタフェース

あります

** Jackson Mixins **を使用しましたが、スタックオーバーフローエラーが発生しています。どんな助けもありがとう。サービス方法において

public abstract class IgnoreMixin { 
    @JsonIgnore 
    public abstract String isServiceOnlyflg(); 
} 

以下

コード:

@Produces(MediaType.APPLICATION_JSON) 
public Response createUserInfo{ 
mapper = new ObjectMapper(); 
mapper.getSerializationConfig().addMixInAnnotations(DealerImpl.class,IgnoreMixin.class); 
writer = mapper.writer().withDefaultPrettyPrinter(); 
return writer.writeValueAsString(userobj); 
} 

アプローチ-2

Iは、同様の性質を持つローカルクラスを作成しようと、それらの特性をマッピングしてみてくださいユーザオブジェクトからloへcalオブジェクトです。 inital推論問題のクラスは、ユーザオブジェクト

に一度しか参照されている。しかし、問題は、ユーザーが順番に何度もオブジェクトの問題を参照してください多くのメンバオブジェクトが含まれていると私は、フレームワークから多くのクラスの多くのローカルコピーを作成する必要がありますユーザー構造

お使いのベースクラスのメソッドが isSomeflag()getSomeflag()であればマニュアルをAccoringこの

+0

あなたはスタックトレースを追加することができますチェック – Koitoer

答えて

2

ための任意のソリューション。

@JsonProperty("newProp") abstract int isSomeflag() 
@JsonIgnore abstract int getSomeflag(); 

1つを無視し、もう1つはJsonPropertyでマーシャルにします。

はまた、おそらくあなたはjsonfilterに分割する必要がある循環依存関係の範囲内にある、このlink

FilterProvider filterProvider = new SimpleFilterProvider() 
     .addFilter("filtermixin", SimpleBeanPropertyFilter.serializeAllExcept("circulardependency"));