之前一直以爲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或者報錯,要以測試結果爲準。