我有一个枚举:
public enum Action {
Remove=1,
Add=2
}
还有一个类(class):
[DataContract]
public class Container {
[DataMember]
public Action Action {get; set;}
}
当将 Container 的实例序列化为 json 时,我得到:{Action:1}
(如果 Action 是 Remove)。
我想得到:{Action:Remove}
(而不是 int 我需要 ToString 形式的枚举)
我可以在不向类(class)添加其他成员的情况下这样做吗?
最佳答案
使用 Json.Net ,您可以将自定义的 StringEnumConverter
定义为
public class MyStringEnumConverter : Newtonsoft.Json.Converters.StringEnumConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value is Action)
{
writer.WriteValue(Enum.GetName(typeof(Action),(Action)value));// or something else
return;
}
base.WriteJson(writer, value, serializer);
}
}
并序列化为
string json=JsonConvert.SerializeObject(container,new MyStringEnumConverter());
关于c# - 将枚举序列化为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9156820/