今天再总结一下,枚举可能会遇到的问题,下面举例说明:
一、最基本的情况
public enum EnumAction
{
turnOn,
turnOff
}
public class Test
{
public EnumAction Action{ get; set; }
}
Test test = new Test();
test.A = EnumAction.turnOn;
string json = JsonConvert.SerializeObject(test);
得到的json结果:
{”Action":0}
但这可能不是我们想要的继续往下
二、如果我们想要的是{"Action":"turnOn"},需要这样改一下
public class Test
{
[JsonConverter(typeof(StringEnumConverter))]
public EnumAction Action{ get; set; }
}
三、如果Action要改成小写变成这样{"action":"turnOn"},需要这样改一下
public class Test
{
[JsonProperty(PropertyName = "action"),JsonConverter(typeof(StringEnumConverter))]
public EnumAction Action{ get; set; }
}
四、如果Action是个数组或List,比如想要这样{"actions":["turnOn","turnOff"]},需要这样改一下
public class Test
{
[JsonProperty(PropertyName = "actions",
ItemConverterType = typeof(StringEnumConverter))]
public EnumAction[] Actions{ get; set; }
}
五、但是还有一种情况,枚举中的一项正好是关键字怎么办?比如turnOn,turnOff,continue,可以这样
public enum EnumAction
{
turnOn,
turnOff,
@continue
}