Sam*_*tar 4 c# asp.net asp.net-mvc asp.net-web-api
我有以下模型类:
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; }
}
Run Code Online (Sandbox Code Playgroud)
来自我客户的数据如下所示:
{"Checked":[true,true,false,false,false,false],"Matches":null,"TestQuestionId":480,"Text":null}
Run Code Online (Sandbox Code Playgroud)
如果某些数据可能不存在,我是否需要修改我的模型类?如果是这样,我该如何修改 IList ?
如果您尝试反序列化的字段是Value Type,并且您的 JSON 表示其null,那么您需要将其更改为Nullable字段。
如果作为 null 传输的值是引用类型,则无需更改任何内容,因为引用类型可以为 null。反序列化 JSON 时,该值将保持为 null。
例如,假设TestQuestionIdJSON 中为 null:
{
"Checked": [true,true,false,false,false,false],
"Matches": null,
"TestQuestionId": null,
"Text":null
}
Run Code Online (Sandbox Code Playgroud)
如果您想正确反序列化该 JSON,则必须声明TestQuestionId为 a 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; }
}
Run Code Online (Sandbox Code Playgroud)
编辑
为了简单明了:值类型(int、uint、double、sbyte 等)不能分配空值,这就是Nullable<T>发明(AKA Nullable Types)的原因。引用类型(字符串、自定义类)可以分配空值。
| 归档时间: |
|
| 查看次数: |
4218 次 |
| 最近记录: |