首页 > 解决方案 > 在 Json.NET 序列化期间忽略某些属性,但在其他属性上是必需的

问题描述

我正在使用 Json.Net 来序列化一个对象。这是代码:

 var jsonText = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented,
                    new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });

DefaultValueHandling 设置为忽略,因此结果字符串不包含具有默认值的属性。

在 Serialized 类中,无论如何都有一个唯一的属性应该在结果字符串上,所以我使用一个属性来确保该属性会在那里:

[JsonProperty(PropertyName = "componentMainVersion", Required = Required.Always)] 
    public ushort Version { get; set; }

问题是该属性没有生成到字符串。将字符串反序列化回对象时出现异常:

“Newtonsoft.Json.Schema.JsonSchemaException:'对象缺少必需的属性:版本......”

如何确保该属性无论如何都会在结果字符串中(默认值与否)?

标签: c#jsonserializationjson.net

解决方案


试试下面的代码

    [JsonProperty(PropertyName = "componentMainVersion", DefaultValueHandling = DefaultValueHandling.Include)] 
    public ushort Version { get; set; }

Required 是一个不同的属性,它确保始终需要该属性的值


推荐阅读