Zurück camelCased JSON von Web-API
Ich versuche zurück zu kehren camel-cased JSON aus einer ASP.Net Web-API-2-controller. Ich habe eine neue web-Anwendung mit nur ASP.Net MVC-und Web API-bits in ihm. Ich entführte die ValuesController etwa so:
public class ValuesController : ApiController
{
public class Thing
{
public int Id { get; set; }
public string FirstName { get; set; }
public string ISBN { get; set; }
public DateTime ReleaseDate { get; set; }
public string[] Tags { get; set; }
}
//GET api/values
public IHttpActionResult Get()
{
var thing = new Thing
{
Id = 123,
FirstName = "Brian",
ISBN = "ABC213",
ReleaseDate = DateTime.Now,
Tags = new string[] { "A", "B", "C", "D"}
};
return Json(thing);
}
}
Läuft das im IE bekomme ich folgende Ergebnisse:
{"Id":123,"FirstName":"Brian","ISBN":"ABC213","ReleaseDate":"2014-10-20T16:26:33.6810554-04:00","Tags":["A","B","C","D"]}
Folgenden K. Scott Allen ' s post auf das Thema, ich habe Folgendes in der Register-Methode in der WebApiConfig.cs-Datei:
public static void Register(HttpConfiguration config)
{
//Web API configuration and services
var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var settings = jsonFormatter.SerializerSettings;
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Aber ich bekomme immer noch die gleiche, capitilization in meine Ergebnisse. Gibt es etwas, was ich bin fehlt? Ich habe versucht, ein paar andere Ansätze, aber nichts funktioniert noch.
Ist das so eine offensichtliche Antwort ist, dass die Leute denken, ich sollte das herausfinden mich? Ich habe nicht knabbern noch. Ich startete mit einem neuen Projekt und war immer noch nicht in der Lage, diese zu arbeiten.
Ich denke immer noch, Antwort von einem anderen post ist die am meisten anständige: stackoverflow.com/a/22130487/1915401
Ich denke immer noch, Antwort von einem anderen post ist die am meisten anständige: stackoverflow.com/a/22130487/1915401
InformationsquelleAutor beaudetious | 2014-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem WebApiConfig.cs stellen Sie sicher, dass Sie diese zwei Zeilen
stellen Sie sicher, dass Sie installiert Newtonsoft Bibliothek.
Hoffe, das hilft.
Ich hatte ein ähnliches Problem, Sie benötigen, um das formatter form der httpconfig für owin nicht GlobalConfiguration
könnte Ihnen zeigen, einige code, wie hast du den formatter von ht httpconfig von owin?
Ich holte das
jsonFormatter
diese Weise:var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
.InformationsquelleAutor Omar.Alani
Sieht aus wie das Haupt-Problem war, dass ich mit dem JsonResult Verknüpfung Json () - Aktion-Ergebnis-Methode:
Er hatte offenbar die volle Kontrolle über die Formatierung der Ergebnisse. Wenn ich wechseln auf die Rückkehr HttpResponseMessage dann funktioniert es wie erwartet:
Habe ich am Ende mit der code-block in der Datei WebApiConfig als Omar.Alani vorgeschlagen (im Gegensatz zu den viel längeren code hatte ich in meinem OP). Aber die wahre Schuldige wurde das JsonResult action-Methode. Ich hoffe, dies hilft jemand anderes aus.
Ok(authInfo)
gilt das Formatierungsprogramm in der Erwägung, dass mitJson(authInfo)
nicht. DieOk
Methode anwenden würde, die entsprechenden formatter-auf der Grundlage derAccept
header. Sie könnte dann noch zurückIHttpActionResult
.InformationsquelleAutor beaudetious
Müssen Sie
OK()
stattJson()
in den Aktion Methoden.InformationsquelleAutor Jalal
War ich mit Owin und DI (AutoFac in meinem Fall) so, dass wirft eine weitere Schraubenschlüssel in den Werken. Mein Start.cs enthält:
Dann in meinem WebApiConfig.cs habe ich noch:
InformationsquelleAutor Jester
In der Register-Methode WebApiConfig, fügen Sie diese
config.Formatierer.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Vollständige Code der WebApiConfig:
Stellen Sie sicher, dass Sie installiert haben die neueste version von Json.Net/Newtonsoft.Json Installiert und die API-Aktion-Methode gibt Daten in folgender Weise:
InformationsquelleAutor Jay Shah
Versuchen, diese auch.
InformationsquelleAutor Khademul Basher