2013-10-11 45 views
4

我有一種情況,我有兩個路由將爲同一模型返回不同格式的json。在一種情況下,我想包括空值,而在另一種情況下,我不這樣做。在NancyModule中更改json.net配置並進行協商

我的解決方案是創建第二個JsonSerializer並直接在NancyModule中調用它,但我失去了協商的靈活性。我想這樣做雖然是掛鉤到這個談判這樣的事情:

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

回答

0

一種選擇是創建自己的IResponseProcessor,like the existing Json one,而是註冊它的默認之一。在處理器中,確保使用基於路由的不同序列化器(當前上下文在處理器中傳遞)。或者你可以根據上下文的Item集合中的內容決定使用哪個序列化器。

這樣,其中一條路由可以在上下文中設置一些東西,這將驅動處理器選擇一個或另一個串行器。

相關問題