UPDATE [23.12.2019]: Dieses Problem wurde teilweise aufgrund von Eingaben der Vokal- Community zur Roadmap für .NET 5.0 hinzugefügt .
UPDATE [2019-10-10]: Wenn Sie daran interessiert sind, dieses Verhalten für zu implementierenSystem.Text.Json.JsonSerializer
Schauen Sie sich die offene GitHub-Ausgabe an, auf die Chris Yungmann hingewiesen hat, und wiegen Sie sich ab.
An Stelle von:
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
JsonSerializer.Deserialize<SomeObject>(someJsonString, options);
Ich möchte so etwas machen:
// This property is a pleasant fiction
JsonSerializer.DefaultSettings = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
// This uses my options
JsonSerializer.Deserialize<SomeObject>(someJsonString);
// And somewhere else in the same codebase...
// This also uses my options
JsonSerializer.Deserialize<SomeOtherObject>(someOtherJsonString);
Die Hoffnung besteht darin, JsonSerializerOptions
für unsere häufigsten Fälle keine Instanz übergeben zu müssen und die Ausnahme und nicht die Regel außer Kraft zu setzen.
Wie in diesen Fragen und Antworten angegeben , ist dies eine nützliche Funktion von Json.Net. Ich sah in der Dokumentation für System.Text.Json
sowie das GitHub Repo für .NET - Core. Und dieser hier .
Es scheint kein Analogon für die Verwaltung der Standardeinstellungen für die JSON-Serialisierung in .NET Core 3 zu geben. Oder übersehen Sie es?
quelle
There doesn't seem to be an analog for managing JSON serialization defaults in Core-3
- Sprechen Sie über Anfragen in und aus Ihrer API? oder Anfragen und Antworten auf andere Ressourcen?Antworten:
Nein,
JsonSerializerOptions
macht die Standardoptionen nicht verfügbar . Wenn Sie ein bestimmtes Webframework verwenden, können Sie möglicherweise (De-) Serialisierungseinstellungen festlegen. Ansonsten schlage ich vor, eigene Convenience-Methoden zu erstellen.Siehe auch diese offene Ausgabe .
quelle
Sie können eine Erweiterungsmethode erstellen. Hier ist ein Beispiel
Ich verwende separate Methoden, anstatt spezielle Einstellungen erstellen zu müssen, damit sich alle Einstellungen an einem einzigen Ort befinden und leicht wiederverwendbar sind.
Dann rufen Sie es als Methode für eine Zeichenfolge auf, egal ob Literal oder Variable.
quelle
System.Text.Json.JsonSerializer
bezieht sich auf den in NET Core-3.0 ohne zusätzliche Abhängigkeiten. Vielen Dank.System.Text.Json.JsonSerializer
. Das Konzept war genau das gleiche. Ich habe auch den Beispiellink aktualisiert.Die Standardoptionen sind in
JsonSerializer
.NET Core 3.1 nicht verfügbar. Ab Dezember 2019 wurde dies jedoch der Roadmap für 5.0 hinzugefügt .Die Veröffentlichung von .NET 5.0 wird für November 2020 erwartet . Es gibt jedoch keine Garantie dafür, dass dieses spezielle Problem zu einem bestimmten Zeitpunkt behoben wird. Abgesehen vom Warten schlagen diese Antworten Problemumgehungen vor:
quelle
Eine Abhilfe wurde von GitHub Benutzer vorgeschlagen underneutes ss6 wie folgt:
quelle
(Wenn Sie jemals zu Json.NET wechseln)
Ich bevorzuge und empfehle, explizit zu sein und Einstellungen an alle Anrufe zu übergeben, aber Sie können Standardeinstellungen mit DefaultSettings festlegen .
und dann
quelle
System.Text.Json
die JSON-Serialisierung in .NET Core 3.0 integriert ist. Vielen Dank, dass Sie sich die Zeit genommen haben, um zu antworten.