如何在使用json.net的情况下忽略类中的属性

我正在使用Json.NET将一个类序列化为JSON。

我有这样的班级:

class Test1
{
    [JsonProperty("id")]
    public string ID { get; set; }
    [JsonProperty("label")]
    public string Label { get; set; }
    [JsonProperty("url")]
    public string URL { get; set; }
    [JsonProperty("item")]
    public List<Test2> Test2List { get; set; }
}

我只想在Test2Listnull时,将JsonIgnore()属性添加到Test2List属性。 如果它不是null,那么我想把它包含在我的json中。


按照James Newton King的NullValueHandling :如果您自己创建序列化程序而不是使用JavaScriptConvert,则可以设置NullValueHandling属性以忽略。

这里有一个例子:

JsonSerializer _jsonWriter = new JsonSerializer {
                                 NullValueHandling = NullValueHandling.Ignore
                             };

或者,如@amit所示

JsonConvert.SerializeObject(myObject, 
                            Newtonsoft.Json.Formatting.None, 
                            new JsonSerializerSettings { 
                                NullValueHandling = NullValueHandling.Ignore
                            });

使用JsonProperty属性的备用解决方案:

[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
//or
[JsonProperty("property_name", NullValueHandling=NullValueHandling.Ignore)]

正如在这个在线文档中看到的。


与@ sirthomas的答案类似,JSON.NET也尊重DataMemberAttribute上的EmitDefaultValue属性:

[DataMember(Name="property_name", EmitDefaultValue=false)]

如果您已在模型类型中使用[DataContract][DataMember] ,并且不想添加JSON.NET特定的属性,则这可能是可取的。

链接地址: http://www.djcxy.com/p/20069.html

上一篇: How to ignore a property in class if null, using json.net

下一篇: Deserialize json object into dynamic object using Json.net