我有一个案例,我有两个路由将返回相同模型的不同格式的json。在一种情况下,我想要包含空值,在另一种情况下,我不想。
我的解决方案是创建第二个JsonSerializer并直接在NancyModule中调用它,但是我失去了协商的灵活性。我想做的事情就是把它挂在谈判中这样的事情:
return Negotiate
.WithStatusCode(HttpStatusCode.OK)
.WithModel( MyModel)
**.WithSerializer( MyCustomerJsonSerializer)**
.WithView("MyView");
答案 0 :(得分:0)
一种选择是创建自己的IResponseProcessor like the existing Json one,并注册它而不是默认的IResponseProcessor。在处理器中,确保根据路由使用不同的序列化程序(当前上下文在处理器中传递)。或者,您可以根据上下文的Item集合中的某些内容来决定使用哪个序列化程序。
这样,其中一条路线可以在上下文中设置一些东西,这将驱动处理器选择一个或另一个串行器。