.NET 自定義Json序列化時間格式 Intro 和 JAVA 項目組對接,他們的介面返回的數據是一個json字元串,裡面的時間有的是Unix時間戳,有的是string類型,有的還是空,預設序列化規則沒辦法反序列化為時間, 所以自定義了一個 Json 時間轉換器,支持可空時間類型、string、l ...
.NET 自定義Json序列化時間格式
Intro
和 JAVA 項目組對接,他們的介面返回的數據是一個json字元串,裡面的時間有的是Unix時間戳,有的是string類型,有的還是空,預設序列化規則沒辦法反序列化為時間, 所以自定義了一個 Json 時間轉換器,支持可空時間類型、string、long(Unix時間戳毫秒)
Show me the code
public class CustomDateTimeConverter : JavaScriptDateTimeConverter { /// <summary> /// 重寫JavaScriptDateTimeConverter ReadJson 方法 /// </summary> /// <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param> /// <param name="objectType">Type of the object.</param> /// <param name="existingValue">The existing property value of the JSON that is being converted.</param> /// <param name="serializer">The calling serializer.</param> /// <returns></returns> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.Value == null) //相容可空時間類型 { return null; } else { if (reader.TokenType == JsonToken.Date) { return reader.Value; } else if (reader.TokenType == JsonToken.String) { DateTime dt = DateTime.Parse(reader.Value.ToString()); return dt; } else { return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToInt64(reader.Value)).ToLocalTime(); } } } }
How To Use
var model = JsonConvert.DeserializeObject<ResponseModel>(res,new CustomDateTimeConverter());
End
如果你有更好的實現方法,歡迎提出
歡迎隨時聯繫我 [email protected]