Ich möchte Aufzählungen mit json.net in ihre Zeichenfolgendarstellung deserialisieren und umgekehrt. Die einzige Möglichkeit, das Framework anzuweisen, es anzuwenden, StringEnumConverter
besteht darin, die fraglichen Eigenschaften wie folgt zu kommentieren:
[JsonConverter(typeof(StringEnumConverter))]
public virtual MyEnums MyEnum { get; set; }
In meinem Anwendungsfall wäre es jedoch viel bequemer, json.net global so zu konfigurieren, dass alle Aufzählungen mithilfe von (de) serialisiert werden StringEnumConverter
, ohne dass zusätzliche Anmerkungen erforderlich sind.
Gibt es eine Möglichkeit, dies zu tun, z. B. mit Hilfe von Gewohnheiten JsonSerializerSettings
?
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings
aber es hat nicht funktioniert. Irgendeine Idee warum das sein könnte?Die anderen Antworten funktionieren für ASP.NET. Wenn Sie diese Einstellungen jedoch allgemein für den Aufruf von JsonConvert in einem beliebigen Kontext festlegen möchten, können Sie Folgendes tun:
(Siehe http://james.newtonking.com/archive/2013/05/08/json-net-5-0-release-5-defaultsettings-and-extension-data )
quelle
JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Converters = { new StringEnumConverter { CamelCaseText = true } } };
In Ihrer Global.asax.cs hinzufügen
quelle
Gehen Sie für ASP.NET Core 2 wie folgt vor:
Bitte beachten Sie, dass dies nicht der
services.AddJsonOptions(...)
Fall ist . Es muss auf MVC markiert sein, da Sie Einstellungen für MVC erstellen.quelle
Die vorherigen Antworten sind ab Version 12.0.1 veraltet. Der neue Weg ist die Verwendung von NamingStrategy. https://www.newtonsoft.com/json/help/html/NamingStrategyCamelCase.htm
quelle