Meu problema é que eu desejo retornar dados JSON camelCased (ao contrário do PascalCase padrão) via ActionResult s dos métodos do controlador ASP.NET MVC, serializados pelo JSON.NET .
Como exemplo, considere a seguinte classe C #:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Por padrão, ao retornar uma instância desta classe de um controlador MVC como JSON, ela será serializada da seguinte maneira:
{
"FirstName": "Joe",
"LastName": "Public"
}
Gostaria que fosse serializado (por JSON.NET) como:
{
"firstName": "Joe",
"lastName": "Public"
}
Como eu faço isso?
asp.net-mvc
json
json.net
camelcasing
aknuds1
fonte
fonte
Controller
método, provavelmente deve usar umApiController
, nesse caso, essa resposta funciona muito bem.application/json
, nãotext/plain
.Encontrei uma excelente solução para esse problema no blog de Mats Karlsson . A solução é escrever uma subclasse de ActionResult que serialize dados via JSON.NET, configurando o último para seguir a convenção camelCase:
Em seguida, use esta classe da seguinte maneira no seu método de controlador MVC:
fonte
Para WebAPI , confira este link: http://odetocode.com/blogs/scott/archive/2013/03/25/asp-net-webapi-tip-3-camelcasing-json.aspx
Basicamente, adicione este código ao seu
Application_Start
:fonte
Eu acho que esta é a resposta simples que você está procurando. É do blog de Shawn Wildermuth :
fonte
Uma alternativa ao filtro customizado é criar um método de extensão para serializar qualquer objeto para JSON.
Em seguida, chame-o ao retornar da ação do controlador.
fonte
Mais simples é melhor IMO!
Por que você não faz isso?
O controlador simples da classe base
fonte
No ASP.NET Core MVC.
fonte
Abaixo está um método de ação que retorna uma string json (cameCase) serializando uma matriz de objetos.
Observe que a instância JsonSerializerSettings passou como o segundo parâmetro. É isso que faz o camelCase acontecer.
fonte
Eu fiz assim:
este é um método simples de extensão no núcleo do MVC, que dará a capacidade do ToJson () para todos os objetos do seu projeto. Na minha opinião, em um projeto do MVC, a maioria dos objetos deve ter a capacidade de se tornar json, claro que depende :)
fonte
Você deve definir as configurações no arquivo 'Startup.cs'
Você também deve defini-lo nos valores padrão do JsonConvert, caso deseje posteriormente usar diretamente a biblioteca para serializar um objeto.
fonte
Se você estiver retornando o ActionResult no resultado da api da web .net core ou IHttpAction, basta encerrar o modelo em um método Ok () que corresponda ao caso no seu front end e o serialize para você. Não há necessidade de usar o JsonConvert. :)
fonte