4

同じモデルに対して異なる形式の json を返す 2 つのルートがある場合があります。null 値を含めたい場合もあれば、含めない場合もあります。

これに対する私の解決策は、2 番目の JsonSerializer を作成し、それを NancyModule で直接呼び出すことでしたが、交渉の柔軟性が失われました。私がやりたいことは、これを次のようなネゴシエーションにフックすることです:

return Negotiate 
.WithStatusCode(HttpStatusCode.OK)
.WithModel( MyModel)
**.WithSerializer( MyCustomerJsonSerializer)**
.WithView("MyView");
4

1 に答える 1

0

1 つのオプションは、既存の Json のような独自の IResponseProcessor を作成し、デフォルトのものの代わりに登録することです。プロセッサでは、ルートに基づいて異なるシリアライザを使用していることを確認してください (現在のコンテキストがプロセッサに渡されます)。または、コンテキストの Item コレクションの何かに基づいて、使用するシリアライザーを決定するようにすることもできます。

こうすることで、ルートの 1 つがコンテキストに何かを設定することができ、これによりプロセッサはいずれかのシリアライザーを選択するようになります。

于 2013-10-21T22:36:44.013 に答える