using Newtonsoft.Json;
namespace FAL.WebAPI2012.Controllers
{
public class Person
{
public int Id {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Include,
NullValueHandling = NullValueHandling.Include)]
public DateTime? Dob { get; set; }
}
public class TestNullsController : ApiController
{
// GET api/<controller>
public Person Get()
{
Person myPerson = new Person() {
Dob = null, FirstName = "Adrian", Id=1, LastName="Bobby"
};
return myPerson;
}
}
}
正如你看到的,我的杜伯字段设置为null,但结果是以下序列化到JSON,可空日期被使用Json.NET和Web API省略尽管指定NullValueHandling
{ "Id":1, "FirstName":"Adrian", "LastName":"Bobby" }
和Dob
没有序列化为null,我需要它!我测试了JsonProperty
正在设置其他属性,如名称,它完全改变了JSON输出,我只是无法获得可空属性被序列化,并且我测试了Json.Net(参见下面的答案)。 ),所以我的想法是,Web API设置重写某处的东西,会很高兴知道在哪里)。
感谢您的输入,只是在控制台应用程序中尝试了这一点,并验证了您的结果。我认为,这不是json.net,而是web API的设置中的某些东西,这是压倒一切的。我创建了一个新的webapi项目,以防万一我重写了某些内容,因此输入了与我在问题中发帖相同的代码片段,并且仍然没有日期属性。所以,我认为web api覆盖了一些东西 – orangesherbert 2012-07-16 21:35:04
@TwistedInferno这可能会导致关于这个问题的“过度本地化”关闭,因为它不涉及Json.NET,而是另一个代码区域。 – casperOne 2012-07-16 21:43:20
我不确定我是否遵循,为避免关闭,我应该从标记中删除Json.NET还是这种类型的问题不属于堆栈溢出? – orangesherbert 2012-07-16 22:00:10