1

たとえば、「/cid/{cid}/{action}」という URL の受信リクエストがあります。

パス変数 {action} には、{action} という 2 つの値を指定できます: 1)list 2)tile

JSON 出力用のパラメーターを持つ私の POJO クラスは以下のとおりです。

public class Area {

    private Integer aId;
    private String aName;
    private Integer allSpaces;
    private Integer violated;
    private Integer percent;
    private Integer level;
    private List<Space> space = new ArrayList<Space>(); // this List should be depend on condition

    public Area(Integer aId, String aName, Integer allSpaces, Integer violated, Integer percent, Integer level) {
        this.aId = aId;
        this.aName = aName;
        this.allSpaces = allSpaces;
        this.level = level;
        this.violated = violated;
        this.percent = percent;
    }

    public Integer getaId() {
        return aId;
    }

    public void setaId(Integer aId) {
        this.aId = aId;
    }

    public String getaName() {
        return aName;
    }

    public void setaName(String aName) {
        this.aName = aName;
    }

    public Area addSpace(Space s) {
        space.add(s);

        return this;
    }

    public List<Space> getSpace() {
        return space;
    }

    public void setSpace(List<Space> space) {
        this.space = space;
    }

    public Integer getAllSpaces() {
        return allSpaces;
    }

    public void setAllSpaces(Integer allSpaces) {
        this.allSpaces = allSpaces;
    }

    public Integer getViolated() {
        return violated;
    }

    public void setViolated(Integer violated) {
        this.violated = violated;
    }

    public Integer getPercent() {
        return percent;
    }

    public void setPercent(Integer percent) {
        this.percent = percent;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }
}

私の出力はaction =listprivate List space = new ArrayList()のパラメーターで構成されるべきではありませんが、action=tileのパラメーターを表示する必要があります。

誰かがこれで私を助けてくれるなら、それは大きな助けになるでしょう.

4

2 に答える 2

0

クラスがシリアル化されspace、JSON へのシリアル化から除外する場合は、それを としてマークできますtransient

private transient List<Space> space = new ArrayList<Space>();

これが発生するかどうかを判断したい場合は、サブクラス化することができます。Area したがって、コントローラーはまたはのいずれかを呼び出しListAreaますTileArea

于 2012-09-03T07:25:47.397 に答える
0

私は私の質問に対する答えを得ました

private List<Space> space = null;代わりに初期化しましたprivate List<Space> space = new ArrayList<Space>();

以下のように私のpojoの上に@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)を追加しました

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public class Area {

現在、value==nullシリアル化された出力に含まれないパラメーターですが、コンストラクターを使用して動的に初期化し、必要に応じて出力を取得できます。

于 2012-09-04T10:18:02.360 に答える