Ang*_*ker 3 c# serialization json.net
我有一堂课,我无法改变:
public enum MyEnum {
Item1 = 0,
Item2 = 1
}
public class foo {
[JsonConverter(typeof(StringEnumConverter))]
public MyEnum EnumTypes {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该行的某个地方JsonConvert.SerializeObject序列化了该对象,并且由于该JsonConverter属性,它会为该值foo.EnumTypes而不是数字吐出枚举值的名称.
无论如何都要JsonConvert.SerializeObject忽略属性上的EnumTypes属性?
这是可能的,但这个过程很少涉及.
基本思想是创建自定义ContractResolver并覆盖其CreateProperty方法.像这样的东西:
internal sealed class MyContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty( MemberInfo member, MemberSerialization memberSerialization )
{
var property = base.CreateProperty( member, memberSerialization );
if( member.DeclaringType == typeof( foo ) && property.PropertyType == typeof( MyEnum ) )
{
property.Converter = null;
}
return property;
}
}
Run Code Online (Sandbox Code Playgroud)
您还需要实际实例化此类并将其传递给序列化器/反序列化器.看起来的样子取决于你是如何进行序列化的,所以我无法保证如何使用它的相关示例.
如果您只是使用静态SerializeObject方法:
JsonConvert.SerializeObject( valueToSerialize, new SerializerSettings { ContractResolver = new MyContractResolver() } );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |