Ich versuche, die globalen Serializer-Einstellungen wie folgt in meinem global.asax
.
var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.Objects,
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
Wenn Sie ein Objekt mit dem folgenden Code serialisieren, werden die globalen Serializer-Einstellungen nicht verwendet.
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(JsonConvert.SerializeObject(page))
};
Ist es nicht möglich, die globalen Serializer-Einstellungen so festzulegen, oder fehlt mir etwas?
Einstellen des JsonConvert.DefaultSettings
hat den Trick gemacht.
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.Objects,
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
Akzeptierte Antwort hat bei mir nicht funktioniert. In .netcore habe ich damit gearbeitet ...
services.AddMvc(c =>
{
....
}).AddJsonOptions(options => {
options.SerializerSettings.Formatting = Formatting.Indented;
....
})
Führen Sie in Ihrer Aktion einfach die folgenden Schritte aus, damit Sie eine inhaltsbezogene Antwort zurückgeben und auch Ihre Formatierungseinstellungen wirksam werden.
return Request.CreateResponse(HttpStatusCode.OK, page);
Sie sind richtig, wo Sie den Serializer einstellen. Dieser Serializer wird jedoch verwendet, wenn die Anforderung an Ihre Site mit einem angeforderten JSON-Inhaltstyp erfolgt. Es ist nicht Teil der Einstellungen, die beim Aufrufen von SerializeObject verwendet werden. Sie können dies umgehen, indem Sie die global.asax definierten JSON-Serialisierungseinstellungen über eine Eigenschaft verfügbar machen.
public static JsonSerializerSettings JsonSerializerSettings
{
get
{
return GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
}
}
Verwenden Sie dann diese Eigenschaft, um die Serialisierungseinstellungen festzulegen, wenn Sie die Serialisierung in Ihren Controllern ausführen:
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(JsonConvert.SerializeObject(page, WebApiApplication.JsonSerializerSettings))
};