首页 > 解决方案 > 将 Json 字符串反序列化为枚举 C#

问题描述

我正在对 stringEnumConverter 的自定义版本进行测试。但是当我反序列化时,我的测试一直在抛出。我搜索了堆栈溢出,但找不到我做错了什么。以下是我正在做的一个示例:

namespace ConsoleApp2
{
    [Flags]
    [JsonConverter(typeof(StringEnumConverter))]
    enum TestEnum
    {
        none = 0, 
        obj1 = 1,
        obj2 = 2
    }

    class Program
    {
        static void Main(string[] args)
        {
            var jsonString = "{none}";
            var deserializedObject = JsonConvert.DeserializeObject<TestEnum>(jsonString);
        }
    }
}

我在反序列化行上遇到的异常是解析枚举时出现意外令牌 StartObject。

我怀疑这可能是因为我代表 json 字符串错误,我也尝试过"{\"none\"}", "{\"TestEnum\":\"none\"}", "{TestEnum:none}", "{none}" and "none".

标签: c#jsonenumsdeserialization

解决方案


{none} 不是有效的 JSON,但 'none' 是有效的!

您应该尝试以下方法:

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello World");
        var jsonString = "'none'";
        var deserializedObject = JsonConvert.DeserializeObject<TestEnum>(jsonString);
        Console.WriteLine(deserializedObject);
    }
}

干杯!


推荐阅读