Mój problem polega na tym, że chcę zwrócić dane JSON camelCased (w przeciwieństwie do standardowej PascalCase) za pośrednictwem ActionResult s z metod kontrolera ASP.NET MVC, serializowanych przez JSON.NET .
Jako przykład rozważ następującą klasę C #:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Domyślnie, zwracając instancję tej klasy z kontrolera MVC jako JSON, zostanie ona serializowana w następujący sposób:
{
"FirstName": "Joe",
"LastName": "Public"
}
Chciałbym, aby został zserializowany (przez JSON.NET) jako:
{
"firstName": "Joe",
"lastName": "Public"
}
Jak mam to zrobic?
asp.net-mvc
json
json.net
camelcasing
aknuds1
źródło
źródło
Controller
metody, prawdopodobnie powinieneś użyćApiController
, w takim przypadku ta odpowiedź działa świetnie.application/json
nietext/plain
.Znalazłem doskonałe rozwiązanie tego problemu na blogu Matsa Karlssona . Rozwiązaniem jest napisanie podklasy ActionResult, która serializuje dane za pośrednictwem JSON.NET, konfigurując tę ostatnią zgodnie z konwencją camelCase:
Następnie użyj tej klasy w następujący sposób w metodzie kontrolera MVC:
źródło
W przypadku interfejsu WebAPI sprawdź ten link: http://odetocode.com/blogs/scott/archive/2013/03/25/asp-net-webapi-tip-3-camelcasing-json.aspx
Zasadniczo dodaj ten kod do
Application_Start
:źródło
Myślę, że jest to prosta odpowiedź, której szukasz. Pochodzi z bloga Shawn Wildermuth :
źródło
Alternatywą dla niestandardowego filtra jest utworzenie metody rozszerzenia do serializacji dowolnego obiektu do JSON.
Następnie wywołaj go po powrocie z akcji kontrolera.
źródło
Prostsze jest lepsze IMO!
Dlaczego tego nie robisz?
Prosty kontroler klasy bazowej
źródło
W ASP.NET Core MVC.
źródło
Poniżej znajduje się metoda akcji, która zwraca ciąg json (cameCase) poprzez serializację tablicy obiektów.
Uwaga: instancja JsonSerializerSettings przekazana jako drugi parametr. Właśnie dlatego tak się stało.
źródło
Podobało mi się to:
ta prosta metoda rozszerzenia w rdzeniu MVC, da ToJson () możliwość każdemu obiektowi w twoim projekcie. Moim zdaniem w projekcie MVC większość obiektów powinna mieć możliwość zostania jsonem, oczywiście to zależy :)
źródło
Musisz ustawić ustawienia w pliku „Startup.cs”
Musisz także zdefiniować go w domyślnych wartościach JsonConvert, to jest, jeśli później chcesz bezpośrednio użyć biblioteki do serializacji obiektu.
źródło
Jeśli zwracasz ActionResult w interfejsie API .NET Core lub wynik IHttpAction, możesz po prostu zawinąć swój model w metodę Ok (), która dopasuje obudowę do twojego interfejsu i serializuje go dla Ciebie. Nie musisz używać JsonConvert. :)
źródło