其他分享
首页 > 其他分享> > 多个@JsonProperty操作同一个属性

多个@JsonProperty操作同一个属性

作者:互联网

@JsonProperty

首先这个注解是干嘛的呢,(用于JSON之间解析与传递)

@Data
@ToString
public class User {

    private Integer userId;
    // JSON 接受创建对象 属性是:userName
    // 给前端返回 属性是:userName
    @JsonProperty("userName")
    private String name1;
}

接下来说一下我的需求场景,需求是:2个JSON属性名 对应一个属性,问了一下项目组大佬,直接贴代码

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ExtraInfoDTO {
    private String fieldName;

    private String fieldText;

    @JsonProperty("fieldValue")
    public void setFieldValue(String fieldValue){
        this.fieldText = fieldValue;
    }

    @JsonProperty("fieldText")
    public void setFieldText(String fieldText){
        this.fieldText = fieldText;
    }

    // 测试
    public static void main(String[] args) {
        String json = "{'fieldName':'a','fieldText':'b'}";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            ExtraInfoDTO extraInfoDTO = objectMapper.readValue(json, ExtraInfoDTO.class);
            System.out.println(extraInfoDTO);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

总结:

  1. 本人理解这个注解作用在属性上,那么该属性的Get/Set方法则是注解内名字所对应生成的 (Class文件内set方法上注解就是该属性上@JsonProperty)
  2. 作用在方法上,那么就是根据json属性名调用的同名@JsonProperty(xxxx) setxxx方法的逻辑。

 

标签:JsonProperty,序列化,String,fieldText,json,属性,同一个
来源: https://www.cnblogs.com/yi1036943655/p/15630910.html