2014-10-27 3 views
0

В моем веб-проекте Api Я использую параметризованные методы и не вызываю имя метода. Я использую $ resource в своем угловом коде, и этот вызов работает отлично.Правильное форматирование JSON с помощью Web API Get()

Например, это заставляет меня список контактов:

public class LeadsController : ApiController 
{ 
    public IEnumerable<Contact> Get() 
    { 
     var contacts = new ContactRepository(); 

     return contacts.BuildContacts(); 
    } 
} 

Единственная проблема у меня есть корпус так, то я использую newtonsoft и должны изменить тип возвращаемого в строку для того, чтобы работать

public class LeadsController : ApiController 
{ 
    public string Get() 
    { 
     var contacts = new ContactRepository(); 
     var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; 

     return JsonConvert.SerializeObject(contacts, Formatting.Indented, settings); 
    } 
} 

Теперь проблема заключается в том, что угловой ожидает массив, но он возвращает объект (строку), поэтому у меня возникают ошибки. Вот мой угловой

return $resource('http://localhost:33651/api/Leads/', { 
    get: { method: 'GET', isArray: false }, 
    query: { 
     method: 'GET', 
     isArray: true 
    } 
}); 

Есть ли способ на моем веб-метод апи я могу вернуть IEnumerable и иметь Json отформатирован в ГорбатыйРегистр правильно? Каков наилучший способ справиться со своей ситуацией?

Спасибо за помощь

ответ

1

Web API уже использует Newtonsoft сериалайзер, поэтому вам нужно только настроить его. Добавьте эти строки в WebApiConfig.Register метод:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
    json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

И вернуться IEnumerable<Contact> вместо string, пожалуйста, посмотрите на этот образец проекта https://github.com/maxbrodin/camel-case-serialization-webapi

Edited

+0

Хорошо это может быть немного над моей головой , Итак, я уверен, что хочу реализовать последний класс в этом сообщении в блоге и использовать его вместо класса newtonsoft? –

+1

@ osiris355 Правильно, попробуйте добавить класс 'JsonNetFormatter' и зарегистрировать его в' Application_Start'. Это позволит вам сохранить результат типа 'IEnumerable ' вместо 'string'. Метод 'OnWriteToStreamAsync' отвечает за вывод json. –

+0

Я пытаюсь сделать класс, и у меня проблемы. FormatterContext не разрешит. http://stackoverflow.com/questions/20095701/the-type-or-namespace-name-formattercontext-could-not-be-found-net-4-5 –

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