如何在使用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; }
}
我只想在Test2List
为null
时,将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特定的属性,则这可能是可取的。
上一篇: How to ignore a property in class if null, using json.net
下一篇: Deserialize json object into dynamic object using Json.net