1. 程式人生 > >Jackson序列化相關

Jackson序列化相關

問題:

1、響應頁面時間戳為秒

2、序列化類的欄位為null 不響應到頁面

3、專案所有類中只要出現為null的指定都不返還到頁面

4、指定欄位名稱效應轉換

解決:

1、自定義轉換類繼承JsonSeralizer<T>,泛型中編寫需要轉換欄位的型別,示例程式碼

 

/**
 * @author vander
 * @Description: 指定欄位時間格式轉換
 * @Date: Create in 2017/10/25 22:11
 */
public class DateToLongSerializer extends JsonSerializer<Date> {

    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        //轉換為秒
        jsonGenerator.writeNumber(date.getTime()/1000);
    }
}

再在指定欄位上使用@JsonSerialize註解指明,使用該轉換器

 

 

/** 更新時間. */
@JsonSerialize(using = DateToLongSerializer.class)
private Date updateTime;

 

 

 

 

2、在指定類上添加註解@JsonInclude  ## 版本2.0後

 

 
@JsonInclude(JsonInclude.Include.NON_NULL) public class OrderDTO { 
    ...

}

 

3、在spring配置檔案中新增屬性

以springboot構建的專案為例,新增如下屬性

spring.jackson.default-propertty-inclusion=non_null

 

4、使用@JsonProperty註解

如下示例程式碼,頁面Ajax請求,後端效應該物件該欄位的名稱將為orderDetailList

 

@JsonProperty("orderDetailList")
private List<OrderDetail> orderDetails;