Json @JsonIgnore。如何更深入地忽略?

时间:2016-11-14 22:00:40

标签: java json hibernate jackson ignore

所以,我正在创建一个具有类Save的项目,其中包含GameField类的List。保存"保存"到DB(使用Hibernate)。

我使用JSON并且它工作得很好,但它解析了GameField中的所有字段,这使得Json String长约600个字符。因为它太长了,我得到的是org.hibernate.exception.DataException,它表示String的大小太大了。

我试图增加数据库中的可用空间以正确存储那个大字符串,但它没有用。

所以我找到了@JsonIgnore和@JsonIgnoreProperties注释来阻止Json解析几个字段。它只适用于Save类而不适用于GameField。

是否可以阻止Json解析我想要的任何字段?

这是Save class:

public class Save {
    private List<GameField> fields;
    // getters setters , etc.
}

游戏场:

public class GameField {

    @JsonIgnore
    private boolean isSet;

    private char fieldSign;

    @JsonIgnore
    private final int numberInArray;
}

解析代码的片段:

public String getEncodedSaveInString(Save save) throws JsonProcessingException {
    mapper = new ObjectMapper();
    return mapper.writeValueAsString(save);
}

用户类

    @Entity
    public class User {
    @Column(name = "Save")
    private Save save;
}

有解决方案吗?

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了解决方案。我唯一需要做的就是将@JsonIgnore注释放在字段设置器上方。将它置于字段上方本身无法正常工作

代码的工作示例:

private Foo foo;

@JsonIgnore
public void setfoo(Foo newFoo){ this.foo = newFoo;}

工作正常:)