JSON.NET自定義Json序列化時間格式

JSON.NET自定義Json序列化時間格式

Intro

有個項目要和 JAVA 項目組對接,要調用他們的接口圃泡,他們的接口返回的數(shù)據(jù)是一個 json,里面的時間有的是Unix時間戳愿险,有的是string類型颇蜡,有的還是空,默認序列化規(guī)則沒辦法反序列化為時間辆亏,
所以自定義了一個 Json 時間轉換器风秤,支持可空時間類型、string扮叨、long(Unix時間戳毫秒)缤弦。無力吐槽。彻磁。碍沐。

Show me the code

這里實現(xiàn)了一個自定義的 JsonConverter 惦费,自定義反序列化操作

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

使用的時候只需要在反序列化的時候,設置我們自定義的 JsonConverterCustomDateTimeConverter) 就可以了抢韭,代碼如下所示:

var model = JsonConvert.DeserializeObject<ResponseModel>(res,new CustomDateTimeConverter());

End

如果你有更好的實現(xiàn)方法薪贫,歡迎提出

歡迎隨時聯(lián)系我 weihanli@outlook.com

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市刻恭,隨后出現(xiàn)的幾起案子瞧省,更是在濱河造成了極大的恐慌,老刑警劉巖鳍贾,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞍匾,死亡現(xiàn)場離奇詭異,居然都是意外死亡骑科,警方通過查閱死者的電腦和手機橡淑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咆爽,“玉大人梁棠,你說我怎么就攤上這事《饭。” “怎么了符糊?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呛凶。 經常有香客問我男娄,道長,這世上最難降的妖魔是什么漾稀? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任模闲,我火速辦了婚禮,結果婚禮上崭捍,老公的妹妹穿的比我還像新娘。我一直安慰自己缕贡,他們只是感情好翁授,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布拣播。 她就那樣靜靜地躺著晾咪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贮配。 梳的紋絲不亂的頭發(fā)上谍倦,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音泪勒,去河邊找鬼昼蛀。 笑死宴猾,一個胖子當著我的面吹牛,可吹牛的內容都是我干的叼旋。 我是一名探鬼主播仇哆,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夫植!你這毒婦竟也來了讹剔?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤详民,失蹤者是張志新(化名)和其女友劉穎延欠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沈跨,經...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡由捎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了饿凛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狞玛。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涧窒,靈堂內的尸體忽然破棺而出为居,到底是詐尸還是另有隱情,我是刑警寧澤杀狡,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布蒙畴,位于F島的核電站,受9級特大地震影響呜象,放射性物質發(fā)生泄漏膳凝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一恭陡、第九天 我趴在偏房一處隱蔽的房頂上張望蹬音。 院中可真熱鬧,春花似錦休玩、人聲如沸著淆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽永部。三九已至,卻和暖如春呐矾,著一層夾襖步出監(jiān)牢的瞬間苔埋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工蜒犯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留组橄,地道東北人荞膘。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像玉工,于是被迫代替她去往敵國和親羽资。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理遵班,服務發(fā)現(xiàn)削罩,斷路器,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,848評論 25 707
  • 正如前文《Java序列化心得(一):序列化設計和默認序列化格式的問題》中所提到的费奸,默認序列化方法存在各種各樣的問題...
    登高且賦閱讀 8,362評論 0 19
  • 年齡段:25歲-35歲 風格:在很多人的想法里面弥激,職場女性的衣著都是比較過于干練從而顯得人比實際年齡大。 搭配技巧...
    青島金獅DDM劉婷婷閱讀 152評論 2 0
  • 2017年1月23日 一 什么樣的的體驗算是心流體驗愿阐,我覺得一個人的注意力在高度集中的時候就是一個人的心流體驗微服!...
    阿甘阿干閱讀 295評論 0 0