首页后端开发JAVAjackson中@JsonProperty、@JsonIgnore等常用注解总结(jackson jsonproperty)

jackson中@JsonProperty、@JsonIgnore等常用注解总结(jackson jsonproperty)

时间2023-03-27 14:22:26发布访客分类JAVA浏览1067
导读:最近用的比较多,把json相关的知识点都总结一下,jackjson的注解使用比较频繁,jackson的maven依赖<groupId>com.fasterxml.jackson.core</groupId>...

最近用的比较多,把json相关的知识点都总结一下,jackjson的注解使用比较频繁,

jackson的maven依赖

groupId>
    com.fasterxml.jackson.core/groupId>
     
    artifactId>
    jackson-databind/artifactId>
     
version>
    2.5.3/version>

在这单独总结一下,最近常用到的注解。

@JsonProperty :

此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。

对属性名称重命名,比如在很多场景下Java对象的属性是按照规范的驼峰书写,但在数据库设计时使用的是下划线连接方式,此处在进行映射的时候

就可以使用该注解。

例如:使用该注解将以下表结构转化为Javabean:

public class CustomerInfo{
    
private int id;
    
//使用 @JsonProperty注解将表结构中的字段映射到实体类中
@JsonProperty("customer_name")
private String customerName;
    

@JsonProperty("customer_id")
private String customerId;
    

@JsonProperty("product_id")
private String productId;
    

@JsonProperty("source_address")
private String sourceAddress;


public int getId() {
    
    return id;

}


public void setId(int id) {
    
    this.id = id;

}


public String getCustomerName() {
    
    return customerName;

}


public void setCustomerName(String customerName) {
    
    this.customerName = customerName;

}


public String getCustomerId() {
    
    return customerId;

}


public void setCustomerId(String customerId) {
    
    this.customerId = customerId;

}


public String getProductId() {
    
    return productId;

}


public void setProductId(String productId) {
    
    this.productId = productId;

}


public String getSourceAddress() {
    
    return sourceAddress;

}


public void setSourceAddress(String sourceAddress) {
    
    this.sourceAddress = sourceAddress;

}

}

@JsonIgnore:

此注解用于属性或者方法上(最好是属性上),用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其 他的注解,一般标记在属性或者方法上,返回的json数据即不包含该属性。

使用情景:需要把一个List转换成json格式的数据传递给前台。但实体类中基本属性字段的值都存储在快照属性字段中。此时我可以在业务层中做处理,

把快照属性字段的值赋给实体类中对应的基本属性字段。最后,我希望返回的json数据中不包含这两个快照字段,那么在实体类中快照属性上加注解@JsonIgnore,

那么最后返回的json数据,将不会包含customerId和productId两个属性值。

public class CustomerInfo {
    
private int id;
    

//使用 @JsonIgnore注解在生成json数据时,忽略该字段

private String customerName;
    

@JsonIgnore
private String customerId;
    

@JsonIgnore
private String productId;
    

private String sourceAddress;


public int getId() {
    
    return id;

}


public void setId(int id) {
    
    this.id = id;

}


public String getCustomerName() {
    
    return customerName;

}


public void setCustomerName(String customerName) {
    
    this.customerName = customerName;

}


public String getCustomerId() {
    
    return customerId;

}


public void setCustomerId(String customerId) {
    
    this.customerId = customerId;

}


public String getProductId() {
    
    return productId;

}


public void setProductId(String productId) {
    
    this.productId = productId;

}


public String getSourceAddress() {
    
    return sourceAddress;

}


public void setSourceAddress(String sourceAddress) {
    
    this.sourceAddress = sourceAddress;

}

}
    

@JsonIgnoreProperties:

此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

@JsonFormat此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式。

例子:

@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
    
5.@JsonSerialize此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

@JsonDeserialize:

此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize。

@JsonInclude :

属性值为null的不参与序列化。例子:@JsonInclude(Include.NON_NULL)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: jackson中@JsonProperty、@JsonIgnore等常用注解总结(jackson jsonproperty)
本文地址: https://pptw.com/jishu/378.html
Java20的新特性 一款好的低代码开发平台应该是什么样?(低代码开发平台介绍)

游客 回复需填写必要信息