【问题标题】:How to use string to enum converter for JSON deserialize?如何使用字符串到枚举转换器进行 JSON 反序列化?
【发布时间】:2017-11-26 06:41:39
【问题描述】:

我有这个 JSON 字符串:

string json=@"['Apple','Mango','Orange']";

我有以下枚举:

public enum Fruits
{
    Apple=1,
    Mango=2,
    Orange=3
}

我想反序列化它,以便它给出相应的枚举数组。

int[] result= JsonConvert.Derserialize<int[]>(json)// I want results as [1,2,3]

【问题讨论】:

    标签: c# json enums json.net


    【解决方案1】:

    你可以使用下面的代码来做同样的事情。

    class Program
    {
        static void Main(string[] args)
        {
            string json = @"['Apple','Mango','Orange']";
    
            string[] jsonNew = JsonConvert.DeserializeObject<string[]>(json);            
    
            int[] jsonIntNew = jsonNew.AsEnumerable()
                                      .Select(p => (int)Enum.Parse(typeof(Fruits), p, true))
                                      .ToArray();
    
            Console.Read();
    
        }
    }
    
    public enum Fruits
    {
        Apple = 1,
        Mango = 2,
        Orange = 3
    }
    

    您可以使用下面的代码在一行中处理它

    static void Main(string[] args)
    {
        string json = @"['Apple','Mango','Orange']";
    
        //string[] jsonNew = JsonConvert.DeserializeObject<string[]>(json);            
    
        int[] jsonIntNew = JsonConvert.DeserializeObject<string[]>(json).AsEnumerable()
                           .Select(p => (int)Enum.Parse(typeof(Fruits), p, true)).ToArray();
    
        Console.Read();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 2012-03-07
      • 2022-07-06
      • 1970-01-01
      • 2011-01-08
      相关资源
      最近更新 更多