实体对象需要转换为字符串以将其存储在日志文件中以供人类阅读。 属性可以在运行时添加到派生实体。 Serialize在实体基类中定义。 我尝试下面的代码,但它也返回具有空值的属性。 由于许多属性具有空值,因此难以阅读日志。
Hoq只序列化非空属性? 我也试过了
var jsonSettings = new JsonSerializerSettings()
{
DefaultValueHandling = DefaultValueHandling.Ignore,
Formatting = Formatting.Indented,
TypeNameHandling= TypeNameHandling.All
};
return JsonConvert.SerializeObject(this, GetType(), jsonSettings);
这只序列化了newtonsoft json does not serialize derived class properties
中确认的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;
}
测试用例:
var cust= new Customer() { Name="Test"};
Debug.Writeline( cust.Serialize());
观察:结果包含"地址":null
预期:结果不应包含地址属性。
使用ASP.NET /Mono MVC4,.NET 4.6
答案 0 :(得分:1)
您可以创建自己的序列化程序来忽略null属性。
JsonConvert.SerializeObject(
object,
Newtonsoft.Json.Formatting.None,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});