基于某些条件在json中排除字段

时间:2016-10-27 04:38:07

标签: json jackson

我有一个类的对象列表,我将其作为json呈现给浏览器。现在,如果不满足某些条件,我想在json响应中排除对象中的某些属性。

因此,列表中的某些对象将存在这些属性,并且该列表的其他对象将不存在这些属性。

我如何实现这一目标?

我是一个春季启动应用程序。杰克逊正在被使用。

我使用Transformer将Entity转换为Bean,然后使用ResponseEntity将bean转换为json。

请建议可能的解决方案。

感谢。

1 个答案:

答案 0 :(得分:3)

将这些值(您要排除的值)设为null,然后使用@JsonInclude注释来抑制所有空值。

@JsonInclude(Include.NON_NULL)
class Foo {
  String bar;
}

您也可以排除特定字段的null值(与排除整个对象的空值相反)

public class Foo {
    private String field1;
    private String field2;

    @JsonInclude(Include.NON_NULL)
    private String field3;
    ...
    ...
}
版本2.x + 中的

此注释的语法为:

@JsonInclude(JsonSerialize.Inclusion.NON_NULL)

或者您也可以设置全局选项

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 

在Spring项目中,objectMapper是类ObjectMapper的单例实例,您可以@Autowired或从ApplicationContext获取