JSON杰克逊注释被忽略了

时间:2017-04-27 20:55:04

标签: java json jackson

我正在使用@JsonIgnore并仍然收到StackoverflowError。

有一个循环,注释被忽略。

@Entity
@NamedQuery(name="Buch.findAll", query="SELECT b FROM Buch v")
public class Buch implements Serializable {
    private static final long serialVersionUID = 1L;

    ...

    //bi-directional many-to-one association to Titel
    @OneToOne(mappedBy="buch")
    @JsonIgnore
    private Titel Titel;

    ...

    @JsonIgnore
    public Titel getTitel() {
        return this.verein;
    }

    @JsonIgnore
    public void setTitel(Titel titel) {
        this.titel= titel;
    }
}

2 个答案:

答案 0 :(得分:2)

您的代码中存在多个问题:

  • 您正在对字段及其字段使用@JsonIgnore注释 访问者(getter和setter),你应该这样做,只映射一个 他们就足够了。我建议你只映射getter方法 @JsonIgnore
  • 另一件事是你的Titel getter方法不正确 已实现,它应返回Titel字段,但您将返回 this.verein,这是完全错误的,会搞乱逻辑 你的代码,你需要纠正它。

我建议在这里使用@JsonIgnore 与您需要更正的getter方法:

@JsonIgnore
public Titel getTitel() {
    return this.Titel;
}

答案 1 :(得分:1)

我认为这个代码不起作用标题不会设置(杰克逊ex),因为你在setter上创建一个@JsonIgnore用@JsonSetter改变它并在你的getter上添加@JsonIgnore:

@JsonIgnore
public Titel getTitel() {
    return this.verein;
}

@JsonSetter
public void setTitel(Titel titel) {
    this.titel= titel;
}