java可以通过注解将为空或者默认值的属性不会序列化到对象中

 

 嗨,朋友既然有缘,何不关注一下!

  1. @JsonInclude(JsonInclude.Include.NON_NULL)
    将这个注解加在实体类对应的对象名上面,或者类名上面。
    
    Include.ALWAYS 属性都序列化
    Include.NON_DEFAULT 属性为默认值不序列化
    Include.NON_EMPTY 属性为 空(””) 或者为 NULL 都不序列化
    Include.NON_NULL 属性为NULL 不序列化

    举例:
    1. @JsonInclude(JsonInclude.Include.NON_NULL)
    2. private String resourceName;
    resourceName为null的就不会序列化到对象中

     

  2. 自定义一个objectmapper
  3. @Configuration
    public class JacksonConfig {
        @Bean
        @Primary
        @ConditionalOnMissingBean(ObjectMapper.class)
        public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
            ObjectMapper objectMapper = builder.createXmlMapper(false).build();
            SerializerProvider serializerProvider = objectMapper.getSerializerProvider();
            serializerProvider.setNullValueSerializer(new JsonSerializer<Object>() {
                @Override
                public void serialize(Object o, JsonGenerator jsonGenerator, 
             SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeString(
    ""); } }); return objectMapper; } }
    注意但是这个方法会把对象为空,list ,map ,枚举 为 null的情况下也转成 空字符串,这是个弊端,根据需求而用吧。

    3、直接设置属性默认值

    就是在初始化实体类的时候设置属性默认值

    如:private String name="";

posted @ 2022-08-03 16:40  逝年的我们  阅读(2834)  评论(0编辑  收藏  举报