java可以通过注解将为空或者默认值的属性不会序列化到对象中
嗨,朋友既然有缘,何不关注一下!
@JsonInclude(JsonInclude.Include.NON_NULL)
将这个注解加在实体类对应的对象名上面,或者类名上面。 Include.ALWAYS 属性都序列化 Include.NON_DEFAULT 属性为默认值不序列化 Include.NON_EMPTY 属性为 空(””) 或者为 NULL 都不序列化 Include.NON_NULL 属性为NULL 不序列化
举例:@JsonInclude(JsonInclude.Include.NON_NULL)
private String resourceName;
resourceName为null的就不会序列化到对象中
- 自定义一个objectmapper
-
@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="";
春有百花秋有月,夏有凉风冬有雪!