c# Newtonsoft.Json序列化字符串

之前一直以爲Newtonsoft.Json在將字符串序列化成一個對象的時候,如果有不匹配的字段,序列化會報錯或者返回NULL。今天測試了一下發現不是這麼回事。新建了一個測試類:

class TestCls
    {
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 年齡
        /// </summary>
        public int Age { get; set; }
        /// <summary>
        /// 性別
        /// </summary>
        public string Gender { get; set; }
    }

序列化字符串:

var jsonString = "{'Name':'張三','Age':20,'Gender':'男'}";

序列化代碼:

var obj = Json.Deserialize<TestCls>(jsonString);

這樣序列化的結果是正常的,能夠得到預期的結果。



現在我們把序列化字符串中的Name改成Name1,結果是這樣的:

Name字段的值變成了NULL,但是沒有報錯。再把序列化字符串改成這樣:

var jsonString = "{'A':'張三','B':20,'B':'男'}";

沒有 一個字段能對應類的字段,結果是這樣的:

就算是這樣也沒有報錯。後來發現只有一種情況下會報錯,就是數據類型不匹配。把Age的值改爲"李四"

var jsonString = "{'Name1':'張三','Age':'李四','Gender':'男'}";

 綜上所述,不要想當然認爲如果序列化失敗就返回NULL或者報錯,要以測試結果爲準。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章