我如何允许我的WebAPI模型接受空值
本文关键字:空值 模型 WebAPI 何允许 我的 | 更新日期: 2023-09-27 18:13:57
我有以下模型类:
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}
如果可能的话,我需要修改我的模型类吗数据可能不存在,如果存在,那么我如何修改illist ?
如果您试图反序列化的字段是值类型,并且您的JSON表示其null
,那么您需要将其更改为可空字段。
如果作为null传递的值是引用类型,则不需要更改任何内容,因为引用类型可以为null。当对JSON进行反序列化时,该值将保持为空。
例如,假设TestQuestionId
在JSON中为空:
{
"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>
(又名可空类型)被发明的原因。引用类型(字符串、自定义类)可以被赋空值