我已经和JSON.net合作了一段时间.我已经编写了自定义转换器和自定义合同解析器(通常来自修改SO和Newtonsoft网站上的示例),它们工作正常.
除了例子之外,我面临的挑战是,我什么时候应该使用其中一个(或两个)进行处理.根据我自己的经验,我基本上已经确定合同解决方案更简单了,所以如果我可以用他们做我需要的东西,我会这样做; 否则,我使用自定义JsonConverters.但是,我进一步知道两者有时一起使用,因此概念变得更加不透明.
问题:
我在我的Web API项目中使用以下内容Startup.cs将JSON序列化枚举为字符串:
// Configure JSON Serialization
var jsonSerializationSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
jsonSerializationSettings.Formatting = Newtonsoft.Json.Formatting.None;
jsonSerializationSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
这是为了避免装饰每个Enum属性 [JsonConverter(typeof(StringEnumConverter))]
现在,如何选择退出某些Enum属性的全局序列化设置并使用转换为整数的默认序列化程序?
我有一个具有自定义的类,如下所示JsonConverter:
[JsonConverter(typeof(TheShapeSerializer))]
public class TheShape : IShape {
//....
}
我不能改变班级。自定义序列化器的工作方式不适合我的需求。
有没有一种方法可以使用默认的序列化程序而不是TheShapeSerializer来序列化TheShape的实例?
同样,是否有一种方法可以让多个转换器根据给定条件在串行化时间选择?