我如何允许我的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 ?

我如何允许我的WebAPI模型接受空值

如果您试图反序列化的字段是值类型,并且您的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>(又名可空类型)被发明的原因。引用类型(字符串、自定义类)可以被赋空值