首先这个注解是干嘛的呢,(用于JSON之间解析与传递)
可以作用在属性上,给该属性序列化为另一个名称(别名),主要用来序列化和反序列化;
当前端传json字符串,将会把json字符串反序列化为对象,会自动赋值对应的字段值
@JsonProperty
指定的名称(别名)@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(); } } }
总结: