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レベルでこれを行う可能性は何ですか?またはそれを解決するためにオートファックを使用していますか?ご登録にご登録に
@rateus、あなたの答えに感謝します。私は1つのことではっきりしていません。シリアライズ設定のインスタンスを実際に保持している 'SerializerSettings'がスタートアップコンフィギュレーションで行われるので、インスタンスは1つだけです。コンバーターで使用される 'JsonSerializer.Context'でリクエストごとのコンテキストを解決する方法だったと思っていました。 – Kanekotic
@Kanekotic私はあなたが必要と思うものに私の答えを更新しました。私は最初にNewtonSoft Json – raterus