java - 如何忽略 jackson 中的空列表?

标签 java json

我希望我的 Web 服务作为 json 传递以下实体

@Entity(name = "tests")
public class Test {

    @Id
    @GeneratedValue
    private int id;

    @Column(name = "test_name")
    private String name;

    @JoinColumn(name = "test_id")
    @OneToMany(cascade = CascadeType.REMOVE)
    private List<Question> questions;

}

@Entity(name = "questions")
public class Question {

    @Id
    @GeneratedValue
    private int id;

    @Column
    private String question;

    @Column(name = "is_multi_select")
    private boolean isMultiSelect;

    @JoinColumn(name = "question_id")
    @OneToMany(cascade = CascadeType.REMOVE)
    private List<Answer> answers;

}

问题是我希望问题列表不包含在我的 json 中,但我无法让 jackson 忽略它们。

我尝试用@JsonIgnore注释问题列表,但没有结果。我该怎么做?

附注

忘记提及序列化是通过 Jersey 完成的,这是实际返回我的测试列表的方法

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/tests")
public Response getLanguageList() {
    List<Test> tests = TestDao.getTests();
    return Response.status(200).entity(tests).build();
}

最佳答案

@JsonInclude(JsonInclude.Include.NON_EMPTY)

NON_EMPTY 使仅包含非空字段而不包含空集合类型字段。

关于java - 如何忽略 jackson 中的空列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37815601/

相关文章:

java - 延迟集合初始化后 Hibernate 连接不会释放

java - java.sql.timestamp转Json格式

json - 反序列化 double 组

java - Singleton 中的惰性初始化是如何发生的?

java - 在状态设计模式中使用组合和实现

json - 使用 unmarshal 从响应中获取特定的 JSON 字段

json - 如何从远程保护程序下载 json 文件并保存到 bundle 以供离线访问

javascript - 用于带数组的嵌套 JSON 的 ExtJS 4 编写器

java - 使用有效查询字符串的PreparedStatement MySQLSyntaxErrorException

java - 多个 session 工厂,一个连接?