Spring Jackson 反序列化Date時遇到的問題
Jackson對於date的反序列化只支援幾種,如果不符合預設格式則會報一下錯誤
org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '2012-12-12 12:01:01': not a valid representation (error: Can not parse date "2012-12-12 12:01:01": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) at [Source:
[email protected]; line: 1, column: 2] (through reference chain: jerseyspring.representation.Order["payTime"]) at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) at org.codehaus.jackson.map.deser.StdDeserializationContext.weirdStringException(StdDeserializationContext.java:243) at org.codehaus.jackson.map.deser.std.StdDeserializer._parseDate(StdDeserializer.java:577) at org.codehaus.jackson.map.deser.std.DateDeserializer.deserialize(DateDeserializer.java:28) at org.codehaus.jackson.map.deser.std.DateDeserializer.deserialize(DateDeserializer.java:19) at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299) at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414) at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697) at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580) at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315) at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
解決方案:
public class CustomJsonDateDeserializer extends JsonDeserializer<Date> { @Override public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = jp.getText(); try { return format.parse(date); } catch (ParseException e) { throw new RuntimeException(e); } } }
且在欄位的setter上加上註解
@JsonDeserialize(using = CustomJsonDateDeserializer.class)
相關推薦
關於Spring Jackson 反序列化Date時遇到的問題
Jackson對於date的反序列化只支援幾種,如果不符合預設格式則會報一下錯誤 具體支援:("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss
Spring Jackson 反序列化Date時遇到的問題
Jackson對於date的反序列化只支援幾種,如果不符合預設格式則會報一下錯誤 org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from
jackson反序列化時忽略不需要的欄位
有時候,如果資料庫表中增加一個欄位,但返回的JSON字串中含有我們並不需要的欄位,那麼當對應的實體類中不含有該欄位時,會丟擲一個異常,告訴你有些欄位沒有在實體類中找到。解決辦法很簡單,在宣告ObjectMapper之後,加上上述程式碼: objectMapper.configure(Deserializat
Spring boot 配置jackson 反序列化時間格式、忽略實體中沒有的屬性
需要在繼承自 WebMvcConfigurerAdapter 的類中重寫configureMessageConverters 方法 @Override public void configureM
Jackson 反序列化時 大小寫不敏感設定
常用配置 ObjectMapper objectMapper = new ObjectMapper(); objectMapp
小白審計JACKSON反序列化漏洞
ces serialize 簡單 mage 簡單介紹 rac led 代碼審計 ble 1. JACKSON漏洞解析 poc代碼:main.java import com.fasterxml.jackson.databind.ObjectMapper; import co
Jackson反序列化問題
JackSon和內部類,是的,你可以使用,但他們必須是靜態的內部類。 這是我直到今天沒有意識到的東西:這顯然是正確使用內部類在Java開發者社群的巨大的困惑。事實上有一些網頁顯示 JackSon不能使用內部類值。 這實際上是真實的和虛假的,原因就在於Java的內部類的特
Spring framework 反序列化的漏洞
理解這個漏洞需要先看freebuff上的jdni的小例子。這裡就不看了。 Server端程式碼: imort java.io.*; import java.net.*; public class ExploitableServer { public static void main(String[]
Spring-boot-redis序列化Date資料型別
org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Can not deserialize value of type java.util.
jackson 反序列化複雜泛型物件
最近在使用Redis 快取資料的時候使用的spring 的aop自動從快取中去區json資料。發現方法的返回值帶有泛型時,直接簡單的呼叫使用下面的方法無法拿到正確的結果。 Method method = ((MethodSignature) pjp.getSignature(
java 物件序列化和物件反序列化操作時的版本相容性問題
當你一個類實現了Serializable介面,如果沒有定義serialVersionUID,Eclipse會提供這個提示功能告訴你去定義 。在Eclipse中點選類中warning的圖示一下,Eclipse就會自動給定兩種生成的方式。如果你沒有考慮到相容性問題時,就把它關掉,不過有這個功能是好的,只要任何類別
10 分鐘輕鬆學會 Jackson 反序列化自動適配子類
作者:丁儀 來源:https://chengxuzhixin.com/blog/post/Jackson-fan-xu-lie-hua-zi-dong-shi-pei-zi-lei.html json 格式使用非常方便,通常情況下我們反序列化的時候需要指定具體型別。如果遇到繼承型別可能會解析
jackson實現序列化的反序列化解析
效率 出現 span jsonp cor 作用 pat 阿裏 控制 現在項目開發過程中,字符串的傳遞成為前後端交互的主要方式,主要是因為字符串不會出現亂碼等問題,傳送方式是字節碼傳遞,效率比實體較安全。 常見的Json類庫有Gson、JSON
jackson-- JsonTypeInfo多態反序列化
ont 序列 ade opera 反序列化 json images ima 2-2 簡單處理辦法: JsonTypeInfo的註解使用: 略(自行百度即可) 處理下面這種json的處理辦法: {"header":{"operationName":"opnam
jackson中自定義處理序列化和反序列化
public turn ali fast col ast mar 繼承 con http://jackyrong.iteye.com/blog/2005323 ********************************************** 對於一直用gson的
使用 JSON JavaScriptSerializer 進行序列化或反序列化時出錯
ali rac service ons trac 字符 max sta spa 如題 報錯提示: 使用 JSON JavaScriptSerializer 進行序列化或反序列化時出錯。字符串的長度超過了為 maxJsonLength 屬性設置的值。","StackTra
【原創】Spring Data Redis <=2.0.3反序列化漏洞
反序列化 默認 用戶 字節碼 href http strong comm ons Spring Data Redis隸屬於Spring Data家族, 提供簡單易用的方式來訪問Redis緩存。 Spring Data Redis在往Redis裏面寫數據的時候,默認會先對數據
MVC JSON JavaScriptSerializer 進行序列化或反序列化時出錯
MVC control中返回json格式資料一般都是如下格式 [HttpPost] public ActionResult CaseAudit(string name) { var data ="dasda";
記一次使用Jackson對Java物件序列化和反序列化的踩坑經歷
背景大概是這樣,專案中的兩個服務A和B依賴了同一個common包的Java類,A對該類json序列化,而B對其反序列化。在一次common包升級過程中,這個Java類中增加了一個屬性,由於B其實用不到這個屬性,就只把A給升級打包了,這就導致B在反序列化時出現了一個異常:com.fasterxml.j
使用JSON JavaScriptSerializer 進行序列化或反序列化時出錯。字串的長度超過了為 maxJsonLength屬性
“/”應用程式中的伺服器錯誤。 使用 JSON JavaScriptSerializer 進行序列化或反序列化時出錯。字串的長度超過了為 maxJsonLength 屬性設定的值。 說明: 執行當前 Web 請求期間,出現未經處理的異常。請檢查堆疊跟蹤資訊,以瞭解有關該錯