使用Lombok 时@JsonIgnore不起作用

2019-12-25  本文已影响0人  忘记_3a6a

Lombok放入@ConstructorProperties所有参数构造函数。在创建JSON序列化程序期间,字段属性被构造函数属性覆盖。这发生在POJOPropertiesCollector.collectAll

一个简单的解决方案是将设置 suppressConstructorProperties为true中@AllArgsConstructor。

package ren.moore.api.app.common.controller.tools.response.seminar;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import ren.moore.api.config.jackson.NullLongSerializer;
import ren.moore.api.config.jackson.NullShortSerializer;
import ren.moore.api.config.jackson.NullStringSerializer;

import java.util.Date;

/**
 * APP视频列表
 */
@Data
@NoArgsConstructor
@AllArgsConstructor(suppressConstructorProperties =true)
public class AppHotSeminarVo {
    //活动ID
    @JsonSerialize(nullsUsing = NullLongSerializer.class)
    private Long seminarId;
    //活动名称
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String seminarTitle ;
    //图片
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String  seminarPreImgAddr;
    //主讲人名称
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String  lecturerName;
    //主讲人小图
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String  lecturerAvatar;
    //标签
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String  tags;
    //视频时长
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String  mediaTime;

    //直播开始时间
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    //预告|回顾 /直播
    @JsonSerialize(nullsUsing = NullShortSerializer.class)
    private Short seminarStatus;

    //活动一句话介绍
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String signature;

    //播放地址
    @JsonSerialize(nullsUsing = NullStringSerializer.class)
    private String mediaPlayer;

    //是否直播
    @JsonIgnore
    private Short  liveStatus;

    //结束时间
    @JsonIgnore
    private Date endTime;

    //直播地址
    @JsonIgnore
    private String liveMediaPlayer240p;

    //录播地址
    @JsonIgnore
    private String mediaPlayer240p;

}


@JsonIgnore Json不返回该属性

@JsonSerialize(nullsUsing = NullStringSerializer.class) 默认值 取代null

上一篇 下一篇

猜你喜欢

热点阅读