我有以下模型类:
public class UserData
{
public IList<bool> Checked { get; set; }
public IList<int> Matches { get; set; }
public int TestQuestionId { get; set; }
public string Text { get; set; }
}
来自我的客户端的数据如下所示:
{"Checked":[true,true,false,false,false,false],"Matches":null,"TestQuestionId":480,"Text":null}
我是否需要修改我的模型类,如果有可能的话 数据可能不存在,若然,我怎么能修改IList?
答案 0 :(得分:3)
如果您尝试反序列化的字段为Value Type,而您的JSON表示null
,则需要将其更改为Nullable字段。
如果作为null传输的值是Reference Type,则无需更改任何内容,因为引用类型可以为null。反序列化JSON时,该值将保持为空。
例如,假设您的JSON中TestQuestionId
为空:
{
"Checked": [true,true,false,false,false,false],
"Matches": null,
"TestQuestionId": null,
"Text":null
}
如果您想要正确反序列化该JSON,则必须将TestQuestionId
声明为Nullable<int>
,如下所示:
public class UserData
{
public IList<bool> Checked { get; set; }
public IList<int> Matches { get; set; }
public int? TestQuestionId { get; set; }
public string Text { get; set; }
}
修改强>
简单明了:不能为值类型(int,uint,double,sbyte等)分配空值,这就是Nullable<T>
(A.K.A Nullable Types)被发明的原因。可以为引用类型(字符串,自定义类)分配空值。