实体类的花里胡哨

84 阅读1分钟

在实际开发中,会遇到三方接口对接等问题,或者接口兼容转换问题,涉及到字段的对应.
其实可以这么操作,直接上代码

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

@Data
public class BaseDeviceChannelBo {

    @NotBlank
    @JsonProperty("device_id")
    @JsonAlias("device_sn")
    private String deviceSn;

    @NotNull
    @JsonProperty("channel_id")
    @JsonAlias("channel_num")
    private Integer channelNum;

    private String channelId;

}

以他为例子
@JsonProperty("device_id")
@JsonAlias("device_sn")
private String deviceSn;

其中 @JsonAlias("device_sn") 的意识是,给这个属性起了一个别名,那么他的作用是,用device_sn可以接受到值,其次本身叫deviceSn,那么这个属性,可以有两个属性名了,都可以接收到参数.

然后@JsonProperty("device_id") 它的意思是转为json时候的名字是 device_id,而不是deviceSn.转为json的方式有很多,比如用直接用JSON工具类转为json,或者通过接口访问作为入参的时候,通过@RequestBody.都会转为json格式,那么这个名字的转换都会生效

如此,可以避免实体类名字的相互转换,从而要写很多的转换类,这样方便很多.

@JsonAlias给属性起别名,用于接收参数
@JsonProperty 给属性json起名字,用于出参

当用BaseDeviceChannelBo 这个类作为接口的返回参数的时候,只要没有强制转换为json(一般都不用转),那么他返回的参数依然是原本的属性名 deviceSn,channelNum。

本文转自 jimolvxing.blog.csdn.net/article/det…,如有侵权,请联系删除。