How to ignore a property in class if null, using json.net

I am using Json.NET to serialize a class to JSON.

I have the class like this:

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; }
}

I want to add a JsonIgnore() attribute to Test2List property only when Test2List is null . If it is not null then I want to include it in my json.


As per James Newton King: If you create the serializer yourself rather than using JavaScriptConvert there is a NullValueHandling property which you can set to ignore.

Here's a sample:

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

Alternatively, as suggested by @amit

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

An alternate solution using the JsonProperty attribute:

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

As seen in this online doc.


Similar to @sirthomas's answer, JSON.NET also respects the EmitDefaultValue property on DataMemberAttribute :

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

This may be desirable if you are already using [DataContract] and [DataMember] in your model type and don't want to add JSON.NET-specific attributes.

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

上一篇: 我如何使用C#解析JSON?

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