java中@JsonProperty注解规定返回值样式

本文介绍了如何在Java类中移除Lombok的`@Data`注解,转而手动编写getter和setter方法,并使用`@JsonProperty`进行属性映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//@Data  //把lombok的data注释掉,手写get set
@AllArgsConstructor
@NoArgsConstructor
public class Dict {
    private String tableName;
    /**
     * 编号
     */
    private String code;
    /**
     * 名称
     */
    private String nameC;
    /**
     * 拼音码
     */
    private String spell;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 是否可见
     */
    private String display;
    private String aliasName;
    private String codegb;
    private String nameCgb;
    /**
     * 父类编码
     */
    private String fcode;

    private Integer size;
    private Integer current;
    @JsonProperty("TABLE_NAME")//这里指定返回是TABLE_NAME 最后输出就是TABLE_NAME
    public String getTableName() {
        return tableName;
    }

    public void setTableName(String tableName) {
        this.tableName = tableName;
    }
    @JsonProperty("code")//这里指定返回是code 最后输出就是code
    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
    @JsonProperty("name_C")//这里指定返回是name_C 最后输出就是name_C
    public String getNameC() {
        return nameC;
    }

    public void setNameC(String nameC) {
        this.nameC = nameC;
    }
    @JsonProperty("yyds")//这里指定返回是yyds 最后输出就是yyds
    public String getSpell() {
        return spell;
    }

    public void setSpell(String spell) {
        this.spell = spell;
    }
    @JsonProperty("SORT")
    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }
    @JsonProperty("DISPLAY")
    public String getDisplay() {
        return display;
    }

    public void setDisplay(String display) {
        this.display = display;
    }
    @JsonProperty("ALIAS_NAME")
    public String getAliasName() {
        return aliasName;
    }

    public void setAliasName(String aliasName) {
        this.aliasName = aliasName;
    }
    @JsonProperty("CODEGB")
    public String getCodegb() {
        return codegb;
    }

    public void setCodegb(String codegb) {
        this.codegb = codegb;
    }
    @JsonProperty("NAMECGB")
    public String getNameCgb() {
        return nameCgb;
    }

    public void setNameCgb(String nameCgb) {
        this.nameCgb = nameCgb;
    }
    @JsonProperty("FCODE")
    public String getFcode() {
        return fcode;
    }

    public void setFcode(String fcode) {
        this.fcode = fcode;
    }
    @JsonProperty("SIZE")
    public Integer getSize() {
        return size;
    }

    public void setSize(Integer size) {
        this.size = size;
    }
    @JsonProperty("CURRENT")
    public Integer getCurrent() {
        return current;
    }

    public void setCurrent(Integer current) {
        this.current = current;
    }
}

看一下返回结果
在这里插入图片描述
在这里插入图片描述


@Data
public class R<T> {

    private int code;

    private String msg;

    private T data;

    public static <T> R<T> ok(String msg, T data) {
        return result(HttpStatus.HTTP_OK, msg, data);
    }

    public static <T> R<T> error(String msg, T data) {
        return result(HttpStatus.HTTP_BAD_REQUEST, msg, data);
    }
    public static <T> R<T> error(Integer code,String msg, T data) {
        return result(code, msg, data);
    }
    public static R<String> error(String msg) {
        return result(HttpStatus.HTTP_BAD_REQUEST, msg, null);
    }

    public static <T> R<T> error(T data) {
        return result(HttpStatus.HTTP_BAD_REQUEST, null, data);
    }

    public static <T> R<T> ok(T data) {
        return result(HttpStatus.HTTP_OK, null, data);
    }

    public static R<String> ok(String msg) {
        return result(HttpStatus.HTTP_OK, msg, null);
    }

    public static <T> R<T> result(int code, String msg, T data) {
        R<T> r = new R<>();
        r.setCode(code);
        r.setMsg(msg);
        r.setData(data);
        return r;
    }

}
@JsonProperty 是 Jackson 库中的注解,用于给 Java 对象的属性指定一个不同于属性名的别名,在序列化和反序列化过程中起作用。 如果 @JsonProperty 注解不生效,可能有以下几个原因: 1. 未正确导入 Jackson 库:在使用 @JsonProperty 注解之前,需要确保已经正确导入了 Jackson 库的相关类。可以通过在项目的依赖管理工具(如 Maven 或 Gradle)中添加正确的依赖项来解决此问题。 2. 忘记给属性添加 @JsonProperty 注解:在需要使用 @JsonProperty 注解的属性上,确保已经正确地添加了该注解。例如: ```java @JsonProperty("newPropertyName") private String oldPropertyName; ``` 3. 序列化或反序列化配置错误:Jackson 库提供了多种方式来配置序列化和反序列化行为,包括 ObjectMapper 的配置以及全局配置。如果没有正确配置 Jackson 库的相关参数@JsonProperty 注解可能不会生效。可以通过检查配置并进行必要的更改来修复此问题。 4. 对象访问修饰符问题:Jackson 默认只序列化公共字段和 getter 方法,如果属性是私有的或者没有相应的 getter 方法,@JsonProperty 注解可能无法生效。可以尝试将属性设置为公共,或者添加相应的 getter 方法。 相关问题: 1. 除了 @JsonProperty 注解外,还有哪些 Jackson 注解可用于控制序列化和反序列化过程? 2. 如何在 Jackson 序列化过程中忽略某个属性? 3. 如何自定义 Jackson 序列化和反序列化的行为? 4. 什么是 Jackson 的 Mixin 注解,如何使用它来修改序列化和反序列化行为? 5. 在 Spring Boot 中如何配置 Jackson 库的属性和行为? 6. 除了 Jackson,还有哪些 Java 序列化库可供选择?它们之间有什么区别?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值