2

私はそのようなJavaクラスを持っています:

@RooJavaBean
@RooToString
@RooJpaActiveRecord
@RooJson

public class class1 {

    /**
     */
    @ManyToOne
    private type1 value1;

    /**
     */
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "xxxxxx")
    private Set<type2> value2 = new HashSet<type2>();
}

したがって、このクラスの値をtoJson()(Roo によって自動生成された)で表示しようとするvalue1と、シリアル化されているだけで、私の値は表示されません。Set<type2>

value2 もシリアル化したい場合は、次のように入力する必要があります。

instanceClass1.toJson(new String[]{"value2"});

toJson()デフォルトのメソッドをシリアル化するにはどうすればよいSet<type2>ですか?

ありがとう

私は一種の解決策を見つけました

 public String StringSims.toJson() {
    return new JSONSerializer().include(new String[]{"value2"}).exclude("*.class").serialize(this);
 }

それが最善の解決策ではないかどうかはわかりません:)私はあなたの提案を待っています

4

1 に答える 1

1

JSONSerializer が返すフィールドをフィルタリングできます (メソッド include() および exclude()) - デフォルトの動作はカスケード関係を返しません。あなたの場合、すべての「value2」にインクルードを使用します。

public String StringSims.toJson() {
    return new JSONSerializer().
            include("*.value2").
            exclude("*.class").
            exclude("*.version").
            serialize(this);
}
于 2014-01-23T19:36:58.330 に答える