有一个C#类具有某些属性。在HttpResponseMessage中输出此类的对象时,我知道如果属性为null,我们可以通过使用以下
注释该属性来隐藏JSON响应中的该属性[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
如果某个值有某种价值,有没有办法隐藏同一个属性?对于例如如果它的值是“Tennis”,不要在JSON中显示SportType属性吗?
答案 0 :(得分:2)
在JSON.net
中,您可以使用条件conditional property serialization
public class Foo
{
public string Id {get; set;}
public SomeProperty Name { get; set; }
public bool ShouldSerializeSomeProperty()
{
return SomeProperty != null || SomeProperty != "Tennis";
}
}
您可以为要定义条件序列化的每个属性定义条件方法。例如,在ShouldSerializeSomeProperty
中,我为SomeProperty
属性定义了一个条件。
答案 1 :(得分:2)
您可以使用ShouldSerializeX
方法忽略属性的序列化取决于某些条件。
public class SampleJsonClass
{
public int Id { get; set; }
public string Name { get; set; }
public bool ShouldSerializeName()
{
return (Name != "Tennis");
}
}
然后
var list = new List<SampleJsonClass>()
{
new SampleJsonClass() {Id = 1, Name = "Sample"},
new SampleJsonClass() {Id = 1, Name = "Tennis"}
};
var serializedJson = JsonConvert.SerializeObject(list);
<强>输出强>
[
{
"Id":1,
"Name":"Sample"
},
{
"Id":1
}
]