如何在Json.Net派生类中序列化非空属性
本文关键字:序列化 属性 派生 Json Net | 更新日期: 2023-09-27 18:11:58
实体对象需要转换为字符串以存储在日志文件中供人阅读。属性可以在运行时添加到派生实体中。序列化在实体基类中定义。我尝试下面的代码,但它返回属性与空值也。由于许多属性都是空值,这使得日志很难读取。
如何只序列化非空属性?
var jsonSettings = new JsonSerializerSettings()
{
DefaultValueHandling = DefaultValueHandling.Ignore,
Formatting = Formatting.Indented,
TypeNameHandling= TypeNameHandling.All
};
return JsonConvert.SerializeObject(this, GetType(), jsonSettings);
只序列化newtonsoft中确认的EntityBase类属性,不序列化派生类属性
public class EntityBase {
public string Serialize()
{
var s = new System.Web.Script.Serialization.JavaScriptSerializer();
s.Serialize(this);
}
}
public class Customer: EntityBase {
public string Name, Address;
}
testcase:
var cust= new Customer() { Name="Test"};
Debug.Writeline( cust.Serialize());
Observed: result包含"Address": null
预期:结果不应该包含Address属性。
ASP。使用。NET/Mono MVC4, .NET 4.6
您可以创建自己的序列化器来忽略null属性。
JsonConvert.SerializeObject(
object,
Newtonsoft.Json.Formatting.None,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});