小编Bri*_*leb的帖子

DefaultValueHandling在Json.NET 4.5中没有兑现

我正在使用JSON.NET 4.5并关注此博客文章,试图让我的用户对象正确序列化.

几个小时我一直在靠墙打我的头; 无论我做什么,当它们被设置为"该值类型的默认单位化值"(即0)时,我无法让Json.NET忽略整数.

[DataContract]    
public class User
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name{ get; set; }

    [DataMember]
    public string Email{ get; set; }        
}
Run Code Online (Sandbox Code Playgroud)

这是序列化它的调用:

var user = new User()
{
    Id = 0,
    Name = "John Doe",
    Email = null
}

string body = JsonConvert.SerializeObject(user, Formatting.Indented, new JsonSerializerSettings()
{
    DefaultValueHandling = DefaultValueHandling.Ignore
});
Run Code Online (Sandbox Code Playgroud)

生成的JSON是:

{
    "Id": 0,
    "Name": "John Doe"
}
Run Code Online (Sandbox Code Playgroud)

电子邮件被省略,因为它为空.应该省略Id,因为它是0.我还尝试在Id上显式设置[DefaultValue(0)]属性,没有效果.

我做错了什么,或者这是一个错误?

更新

我们再看一下后,DefaultValueAtribute 被荣幸地为整数.因此,此代码将导致Ids为0未被序列化.

[DataContract]    
public …
Run Code Online (Sandbox Code Playgroud)

.net json.net

6
推荐指数
1
解决办法
2618
查看次数

标签 统计

.net ×1

json.net ×1