我必须应用不同的序列化规则,这取决于http请求上的上下文传递。我认为最简洁的方法是使用JsonConverter来完成这项工作,该工具将从我的应用程序的启动中挂钩。JsonSerializer每个请求上下文
class MyJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var context = serializer.Context;
...
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var context = serializer.Context;
...
}
public override bool CanConvert(Type objectType)
{
...
}
}
//in the startup i am just registering this converter by
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings
{
Converters = new List<JsonConverter>()
{
new MyJsonConverter()
}
};
的问题是在这一点上我的期望是让serializer.Context
是我的要求的情况下。但实际上是空的。
我怎样才能使这个设置在每个请求的基础上,所以我可以在转换器上使用它?有没有可能在asp.net级别做到这一点?或者可能使用autofac来解决它?
@rateus,谢谢你的回答。我不清楚一件事。与SerializerSettings实际上一样,Serialising设置的实例在启动配置时完成,因此只有一个实例。我正在考虑是否在转换器中使用'JsonSerializer.Context'来解决每个请求的上下文。 – Kanekotic
@Kanekotic我已经更新了我的答案,我认为你需要,我一开始并不知道你使用的是NewtonSoft Json – raterus