msh*_*hwf 5 c# serialization json json.net deserialization
我将JSON对象保存到数据库中,有时它会变得很大(我的对象长度为205,797个字符),我想尽可能地消除大小。这些对象有很多我不需要的GUID字段,如果有一种方法可以忽略序列化的任何GUID类型,则可能有助于消除大小。
这是我的代码,我在应用程序中传递了任何模型类型的对象:
public static string GetEntityAsJson(object entity)
{
var json = JsonConvert.SerializeObject(entity, Formatting.None, new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
return json;
}
Run Code Online (Sandbox Code Playgroud)
编辑
我不想使用JsonIgnore属性,因为我必须将其添加到这么多的类中,每个类都具有许多GUID属性,我正在寻找一些简单的方法:
IgnoreDataType = DataTypes.GUID
您可以使用自定义ContractResolver忽略所有类中特定数据类型的所有属性。例如,这是一个忽略所有内容的代码Guids:
class IgnoreGuidsResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty prop = base.CreateProperty(member, memberSerialization);
if (prop.PropertyType == typeof(Guid))
{
prop.Ignored = true;
}
return prop;
}
}
Run Code Online (Sandbox Code Playgroud)
要使用解析器,只需将其添加到您的JsonSerializerSettings:
var json = JsonConvert.SerializeObject(entity, Formatting.None, new JsonSerializerSettings
{
ContractResolver = new IgnoreGuidsResolver(),
...
});
Run Code Online (Sandbox Code Playgroud)
演示小提琴:https : //dotnetfiddle.net/lOOUfq