Je ne comprends pas comment Json.NET sérialise/désérialise les énumérations.Pourquoi Json.Net désérialise la valeur enum en entier et l'accepte comme valide?
J'ai ce domaine dans mon JSON schéma:
"MyEnumValue": {
"type": "string",
"enum": ["D", "F", "R"]
},
et ce code C#:
[JsonProperty(PropertyName = "MyEnumValue", Required = Required.Always)]
public MyEnumValue MyEnumValue { get; set; }
public enum MyEnumValue
{
D, F, R
}
Lorsque j'utilise cette fonction:
JsonConvert.SerializeObject
Le créé texte JSON contient ceci:
"MyEnumValue":82
JSON.NET désérialise donc une valeur enum qui attend char comme un entier qui est une valeur ASCII d'un char.
Mes questions sont: * Pourquoi est-ce que je n'obtiens le caractère que par Sérialisation?
- Est-ce normal pour les règles de schéma JSON (universelles)?
Je dois manquer quelque chose - votre ENUM est définie comme une série d'entiers. Pourquoi pensez-vous que vous devriez obtenir un «char» en désérialisant? – xxbbcc
Cette question est déroutante. 'JsonConvert.DeserializeObject' convertirait une chaîne JSON en un objet qui ne produirait pas JSON afin de ne pas créer' "MyEnumValue": 82'. Vous n'avez pas explicitement défini la valeur de votre 'MyEnumValue' de sorte qu'ils se verront attribuer implicitement les valeurs 0 à 2 - ils ne seront jamais sérialisés en tant que 82 par défaut. –
'(MyEnumValue) 'R' == 82' –