【发布时间】:2013-04-30 04:08:39
【问题描述】:
当使用Json.NET 将 JSON 字符串反序列化为对象时,如何要求 JSON 搅拌中存在键/属性,但允许 NULL 值?
例如:
假设我有一个类/对象...
[DataContract]
public class Car
{
[DataMember(IsRequired = true)]
public string Vin {get; set;}
[DataMember(IsRequired = true)]
public string Color {get; set;}
public string Description {get; ;set}
}
在上面的示例中,VIN 和 Color 是必需的,如果 JSON 字符串中缺少其中任何一个,则会引发异常。但是可以说,Description 属性在反序列化后是否具有值是可选的。换句话说,NULL 是一个有效值。有两种方法可以在 JSON 字符串中实现这一点:
1)
{
"vin": "blahblahblah7",
"color": "blue",
"description": null
}
或 2)
{
"vin": "blahblahblah7",
"color": "blue"
}
问题是我不想仅仅因为 JSON 字符串中省略了键/值对就假设 Description 值应该为 NULL。我希望 JSON 的发件人明确将其设置为 NULL。如果发生场景 #2,我想检测它并以错误消息进行响应。那么如何要求键/值对存在,但接受 NULL 作为值?
如果有帮助,我会尝试在 ASP.NET Web API 项目的上下文中解决这个问题。
【问题讨论】:
-
[DataMember(IsRequired = true)] public string Description { get;放; } 不工作?提交的描述将需要,但可以接受空值
-
这是在 Web 环境中还是基于 .NET 的纯桌面应用程序?