Jackson序列化相关

问题:

1、响应页面时间戳为秒

2、序列化类的字段为null 不响应到页面

3、项目所有类中只要出现为null的指定都不返还到页面

4、指定字段名称效应转换

解决:

1、自定义转换类继承JsonSeralizer<T>,泛型中编写需要转换字段的类型,示例代码

/**
 * @author vander
 * @Description: 指定字段时间格式转换
 * @Date: Create in 2017/10/25 22:11
 */
public class DateToLongSerializer extends JsonSerializer<Date> {

    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        //转换为秒
        jsonGenerator.writeNumber(date.getTime()/1000);
    }
}

再在指定字段上使用@JsonSerialize注解指明,使用该转换器

扫描二维码关注公众号,回复: 4517649 查看本文章
/** 更新时间. */
@JsonSerialize(using = DateToLongSerializer.class)
private Date updateTime;

2、在指定类上添加注解@JsonInclude  ## 版本2.0后

 
@JsonInclude(JsonInclude.Include.NON_NULL) public class OrderDTO { 
    ...

}

3、在spring配置文件中添加属性

以springboot构建的项目为例,添加如下属性

spring.jackson.default-propertty-inclusion=non_null

4、使用@JsonProperty注解

如下示例代码,页面Ajax请求,后端效应该对象该字段的名称将为orderDetailList

@JsonProperty("orderDetailList")
private List<OrderDetail> orderDetails;

猜你喜欢

转载自blog.csdn.net/qq_15764943/article/details/78347620