Json.NETが列挙型をシリアル化/逆シリアル化する方法について私は混乱しています。なぜJson.Netは整数として列挙型の値を逆シリアル化し、有効なものとして受け入れますか?
私はJSONスキーマでこのフィールドを持っている:
"MyEnumValue": {
"type": "string",
"enum": ["D", "F", "R"]
},
と、このC#コード:私はこの機能を使用する場合
[JsonProperty(PropertyName = "MyEnumValue", Required = Required.Always)]
public MyEnumValue MyEnumValue { get; set; }
public enum MyEnumValue
{
D, F, R
}
:
JsonConvert.SerializeObject
を作成したJSONテキストが含まれていますこれは:
"MyEnumValue":82
JSON.NETはcharをcharのASCII値である整数として期待するenum値を逆シリアル化します。
私の質問は次のとおりです。 *シリアライズでのみチャンクを取得できないのはなぜですか?
- (ユニバーサル)JSONスキーマのルールは正常ですか?
私はここで何かが欠けする必要があります - あなたの列挙は、一連の整数として定義されます。なぜあなたは脱直列化によって 'char'を得るべきだと思いますか? – xxbbcc
この質問は混乱しています。 'JsonConvert.DeserializeObject'は、JSON文字列をJSONを生成しないオブジェクトに変換するので、' 'MyEnumValue":82'を作成しません。 MyEnumValueの値を明示的に設定していないので、暗黙的に0から2の値が割り当てられます。デフォルトでは82としてシリアル化されることはありません。 –
'(MyEnumValue) 'R' == 82' –