【发布时间】:2016-04-13 09:04:42
【问题描述】:
我使用 NewtonSoft.Json 最新版本,需要 serdes 第三方对象。我需要序列化字段。这是我使用的 JsonSerializerSettings:
JsonSerializerSettings settings_ = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Include,
DefaultValueHandling = DefaultValueHandling.Include,
PreserveReferencesHandling = PreserveReferencesHandling.All,
ObjectCreationHandling = ObjectCreationHandling.Replace,
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
ContractResolver = new DynamicContractResolver(),
};
public class DynamicContractResolver : DefaultContractResolver
{
protected override IList<JsonProperty> CreateProperties(Type type, Newtonsoft.Json.MemberSerialization memberSerialization)
{
IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
properties = properties.Where(p => p.PropertyName != "MonitoringInstance" && p.PropertyName != "SessionInstance").ToList();
var fields = type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Select(f => CreateProperty(f, memberSerialization));
return properties.Union(fields, new EqualityComparer()).ToList();
}
}
不幸的是,无论我如何尝试,支持字段都引用了属性。有没有办法扭转它?任何见解都值得赞赏。
【问题讨论】:
标签: c# json serialization json.net field