2013-02-14 2 views
16

У меня есть asp.net-mvc web api. По нескольким причинам (перенаправление из-за отсутствия полномочий ...) я не могу просто использовать простой объект и вернуть его в свой метод контроллера. поэтому мне нужен класс HttpResponseMessage, который позволяет мне перенаправлять.Содержимое HttpResponseMessage как JSON

В настоящее время им делать это

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound }; 
var formatter = new JsonMediaTypeFormatter(); 
response.Content = new ObjectContent<Response>(response, formatter, "application/json"); 

получить объект, сериализованный в JSON, в содержание HttpResponseMessage. Почему-то у меня такое ощущение, что есть еще один, лучший способ сделать это. любые идеи по этому поводу?

ответ

24

Вы можете сделать

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound }; 
Request.CreateResponse<Response>(HttpStatusCode.OK, response); 

По умолчанию Web API установит формат ответа на основе Content-Type, указанного в заголовке запроса HTTP, но есть некоторые перегрузки по методу CreateResponse, где вы можете укажите тип форматирования.

Вы также можете удалить веб-сериализатор api xml, чтобы заставить все ответы быть JSON, если это то, что вы хотите - от верхней части головы. Я думаю, что это метод Formatters.Remove на HttpCOnfiguration.

+0

thank u! работает отлично! я заставил сериализовать все на json :) – gosua

Смежные вопросы