【发布时间】:2020-05-27 23:02:31
【问题描述】:
这是我的枚举代码
[JsonConverter(typeof(StringEnumConverter))]
public enum SystemSwitch
{
EmergencyHeat = 0,
Heat = 1,
Off = 2,
Cool = 3,
Autoheat = 4,
Autocool = 5,
SouthernAway = 6,
Unknown = 7
}
我要反序列化这个 json
var a = @"{'SystemSwitch': 'Heat','HeatCoolMode': 'Cool'}";
try
{
var parsedEventData = Newtonsoft.Json.JsonConvert.DeserializeObject<SystemSwitch>(a);
Console.WriteLine(parsedEventData);
}
但我收到了一个异常提示
{"Unexpected token StartObject when parsing enum. Path '', line 1, position 1."}
如果我尝试使用 json 字符串
string a = "'SystemSwitch':'Cool'";
我明白了
{"Error converting value \"SystemSwitch\" to type 'Testing.Program+SystemSwitch'. Path '', line 1, position 14."}
【问题讨论】:
-
@Jawad 完全不正确,单引号适用于 JSON.Net。问题是 OP 试图直接反序列化为枚举,而不是包含枚举值的类。
-
根据规范,技术上不允许使用单引号。 JSON.NET 确实允许它们。
标签: c# json deserialization enumeration json-deserialization