MISE À JOUR [2019-12-23]: En raison en partie de la contribution de la communauté vocale , ce problème a été ajouté à la feuille de route pour .NET 5.0.
MISE À JOUR [10/10/2019]: Si vous souhaitez voir ce comportement implémenté pourSystem.Text.Json.JsonSerializer
dirigez-vous vers le problème ouvert de GitHub signalé par Chris Yungmann et pesez.
Au lieu de cela:
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
JsonSerializer.Deserialize<SomeObject>(someJsonString, options);
Je voudrais faire quelque chose comme ça:
// 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);
L'espoir est de ne pas avoir à passer une instance de JsonSerializerOptions
pour nos cas les plus courants, et de passer outre à l'exception, pas à la règle.
Comme indiqué dans ces questions et réponses, il s'agit d'une fonctionnalité utile de Json.Net. J'ai regardé dans la documentation pour System.Text.Json
ainsi que ce dépôt GitHub pour .NET Core. Et celui-là .
Il ne semble pas y avoir d'analogue pour gérer les valeurs par défaut de sérialisation JSON dans .NET Core 3. Ou suis-je en train de l'ignorer?
la source
There doesn't seem to be an analog for managing JSON serialization defaults in Core-3
- parlez-vous de requêtes entrant et sortant de votre API? ou demandes et réponses à d'autres ressources?Réponses:
Non,
JsonSerializerOptions
n'expose pas les options par défaut . Si vous utilisez un cadre Web particulier, il peut y avoir un moyen de spécifier les paramètres de (dé-) sérialisation par ce biais. Sinon, je suggère de créer vos propres méthodes pratiques.Voir aussi ce problème ouvert .
la source
Vous pouvez créer une méthode d'extension. Voici un exemple
J'utilise des méthodes distinctes vs avoir à créer des paramètres spéciaux, de sorte que tous les paramètres soient au même endroit et facilement réutilisables.
Ensuite, vous l'appelez comme méthode sur une chaîne, qu'elle soit littérale ou variable.
la source
System.Text.Json.JsonSerializer
dans NET Core-3.0 sans dépendances supplémentaires. Merci.System.Text.Json.JsonSerializer
. Le concept était exactement le même. J'ai également mis à jour l'exemple de lien.Les options par défaut ne sont pas exposées dans
JsonSerializer
.NET Core 3.1. Cependant, en décembre 2019, cela a été ajouté à la feuille de route pour 5.0.La sortie de .NET 5.0 est prévue pour novembre 2020. Mais il n'y a aucune garantie que ce problème particulier sera résolu à un moment donné. Outre l'attente, ces réponses suggèrent des solutions:
la source
Une solution de contournement a été proposée par l'utilisateur GitHub andre-ss6 comme suit:
la source
(Si vous passez à utiliser Json.NET)
Je préfère et recommande d'être explicite et de transmettre les paramètres à tous les appels, mais vous pouvez définir des paramètres par défaut avec DefaultSettings .
et alors
la source
System.Text.Json
lequel la sérialisation JSON est intégrée à .NET Core 3.0. Merci de prendre le temps de répondre.