JSON StringEnumConverter不工作

时间:2015-07-02 10:02:30

标签: c# json enums

我有一个类包含一个枚举属性并使用newtonsoft.json serilaizer我正在序列化它的一个实例。 我希望序列化此属性的输出是属性的字符串值,所以我使用 StringEnumConverter 但输出就像这样

**没有转换器:     “FailOrPassProperty”: 1

**带转换器:     “FailOrPassProperty”: “1”

所以使用转换器似乎得到了整数

的ToString()

我试过这个解决方案,但它不起作用: JSON serialization of enum as string

注意:由于业务规则,我无法使用属性修饰。

1 个答案:

答案 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将使用此值而不是枚举项名称。

for more information

相关问题