2013-10-11 2 views
4

동일한 모델에 대해 다른 형식의 json을 반환하는 두 개의 경로가있는 경우가 있습니다. 한 경우에는 null 값을 포함하고 싶지 만, 다른 경우에는 그렇지 않습니다.협상을 통해 NancyModule에서 json.net 구성을 변경하십시오.

내 솔루션은 두 번째 JsonSerializer를 만들고이를 NancyModule에서 직접 호출하는 것이지만 협상의 유연성이 떨어집니다. 내가 생각 할 싶은 것은 이런 일에 대한 협상에이 후크입니다 :

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

답변

0

하나의 옵션은 자신의 IResponseProcessor, like the existing Json one를 작성하고 기본 하나 대신에 등록하는 것입니다. 프로세서에서 경로를 기반으로 다른 serializer를 사용해야합니다 (현재 컨텍스트가 프로세서에 전달됨). 또는 컨텍스트의 Item 컬렉션에서 someting을 기반으로 사용할 직렬자를 결정할 수 있습니다.

그런 식으로 경로 중 하나가 컨텍스트에서 어떤 것을 설정할 수 있습니다. 그러면 프로세서가 하나 또는 다른 serializer를 선택하게됩니다.