是否可以为NullValueHandling在类上设置Json.Net注释特性



我有一个类,它有很多属性,其中许多属性可以为null值。我正在使用JSON.NET序列化这个类,我希望去掉那些具有null值的属性。

对于每个物业的基础上,我可以做:

public class MyClass
{
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
object property1;
.
.
. 
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
object property346;
}

但是这是非常乏味的,很难维护并且降低可读性。有没有一种方法可以在整个类上设置注释,使其在序列化时忽略具有null值的属性。我确实希望能够通过注释而不是代码来实现这一点。

阅读文档,JsonObjectAttribute似乎没有提供这样做的方法。但是,您可以将配置添加到扩展方法中,该方法会根据要序列化的对象更改序列化设置。

public static string ToJsonString(this object obj)
{
Type[] objectWithoutNulls = { typeof(MyClass) };
bool isWithoutNulls = objectWithoutNulls.Contains(obj.GetType());
if (isWithoutNulls)
{
return JsonConvert.SerializeObject(obj, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
}
else
{
return JsonConvert.SerializeObject(obj);
}
}

然后你可以在所有对象上使用它,比如:

var myClass = new MyClass();
var myObject = new Object();
var myClassJson = myClass.ToJsonString(); // Will remove nulls.
var myObjectJson = myObject.ToJsonString();  // Will not remove nulls.

现在,您可以在一个地方为所有对象添加配置。

相关内容

  • 没有找到相关文章

最新更新