我有一个类包含一个枚举属性并使用newtonsoft.json serilaizer我正在序列化它的一个实例。 我希望序列化此属性的输出是属性的字符串值,所以我使用 StringEnumConverter 但输出就像这样
**没有转换器: “FailOrPassProperty”: 1
**带转换器: “FailOrPassProperty”: “1”
所以使用转换器似乎得到了整数
的ToString()我试过这个解决方案,但它不起作用: JSON serialization of enum as string
注意:由于业务规则,我无法使用属性修饰。
答案 0 :(得分:1)
检查一下:
[TestClass]
public class JsonStringTest
{
[TestMethod]
public void EnumToStringSerializationTest()
{
var testMe = new TestMe()
{
UserType = UserType.User,
};
var settings = new JsonSerializerSettings();
settings.Converters.Add(new StringEnumConverter());
var jsonString = JsonConvert.SerializeObject(testMe, settings);
Assert.AreEqual(jsonString, "{\"UserType\":\"User\"}");
}
}
public class TestMe
{
public UserType UserType { get; set; }
}
public enum UserType
{
Admin = 1,
User = 2
}
更新:
只想添加此便笺:
确保您的枚举项没有EnumMember
属性,因为StringEnumConverter
将使用此值而不是枚举项名称。