我必須應用不同的序列化規則,這取決於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