4

我有一个案例,我有两条路线将为同一模型返回不同格式的 json。在一种情况下,我想包含空值,在另一种情况下,我不想。

我对此的解决方案是创建第二个 JsonSerializer 并直接在 NancyModule 中调用它,但我失去了协商的灵活性。不过,我想做的是将它与这样的谈判挂钩:

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

1 回答 1

0

一种选择是创建自己的 IResponseProcessor,就像现有的 Json 一样,并注册它而不是默认的。在处理器中,确保根据路由使用不同的序列化程序(当前上下文在处理器中传递)。或者,您可以根据上下文的 Item 集合中的某些内容来决定使用哪个序列化程序。

这样,其中一个路由可以在上下文中设置一些东西,这将驱动处理器选择一个或另一个串行器。

于 2013-10-21T22:36:44.013 回答