Json.NET에서 열거 형을 serialize/deserialize하는 방법에 대해 혼란스러워합니다.왜 Json.Net은 정수로 enum 값을 deserialize하고 유효한 것으로 받아들입니까?
내 JSON 스키마에이 필드가 :이 기능을 사용하면
[JsonProperty(PropertyName = "MyEnumValue", Required = Required.Always)]
public MyEnumValue MyEnumValue { get; set; }
public enum MyEnumValue
{
D, F, R
}
가 :
"MyEnumValue": {
"type": "string",
"enum": ["D", "F", "R"]
},
이 C# 코드가
JsonConvert.SerializeObject
을 생성 된 JSON 텍스트에 포함 된 이 :
"MyEnumValue":82
그래서 JSON.NET은 char을 char의 ASCII 값인 정수로 예상하는 enum 값을 deserialize합니다.
내 질문 : * 왜 내가 직렬화를 통해서만 문자를 얻지 못합니까?
- (유니버설) JSON 스키마 규칙은 정상입니까?
- 당신의 열거가 일련의 정수로 정의된다. 왜 당신은 비 직렬화 (deserializing)에 의해'char'를 얻어야한다고 생각합니까? – xxbbcc
이 질문은 혼란 스럽습니다. 'JsonConvert.DeserializeObject'는 JSON 문자열을 객체로 변환하여 JSON을 생성하지 않으므로' "MyEnumValue": 82'를 생성하지 않습니다. MyEnumValue의 값을 명시 적으로 설정하지 않았으므로 암시 적으로 0에서 2까지의 값이 지정됩니다. 기본적으로 82로 직렬화되지 않습니다. –
'(MyEnumValue) 'R'== 82' –