C# 使用不同类型的值解析字典

C# 使用不同类型的值解析字典,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我有一个Json,它返回如下内容: "Name" : { "1" : [ an array of class1 objects ], "2" : [ an array of class2 objects ], "3" : [ an array of class3 objects ], } 如果每个键都有一个相同类型的值,我将使用以下方法: public Dictionary<int, class1[]> object1 { get; set; } 公共字典object1{g

我有一个Json,它返回如下内容:

"Name" : {
 "1" : [ an array of class1 objects ],
 "2" : [ an array of class2 objects ],
 "3" : [ an array of class3 objects ],
}
如果每个键都有一个相同类型的值,我将使用以下方法:

public Dictionary<int, class1[]> object1 { get; set; }
公共字典object1{get;set;}

但如果每个键都有不同的对象类,我不知道该怎么做。我该怎么做呢?

您可以尝试使用这样的对象数组

public Dictionary<int, object[]> ObjectsDictionary { get; set; }

为什么不在任何情况下使用
string
键呢?我建议要么创建一个JsonConverter(假设Newtonsoft JSON,因为您还没有说明使用的是哪个库),要么使用dynamic。@Diego您能指定您的意思吗?@DavidTG使用一个公共基类。如果
object
最合适,
Dictionary object1
。我的第一个反应是,尽管这是有效的JSON,但不一定是好的JSON。你有没有办法改变返回的JSON;在中使用不同的类型指定不同的KVP?另一个选择是将其作为
字典
,并在解析时尝试转换每一个字典。这似乎与解析器一起工作!但当我尝试ObjectsDictionary[0]时,我得到错误CS0176无法使用实例引用访问成员;改为使用类型名称限定它

    class Program
    {
        public static Dictionary ObjectsDictionary { get; set; }

        static void Main(string[] args)
        {
            ObjectsDictionary = new Dictionary();
            Class1[] classes1 =
            {
                new Class1 {X = 54, Y = 454},
                new Class1 {X = 1, Y = 2}
            };
            Classe2[] classes2 =
            {
                new Classe2 {IsSomthing = true, Name = "String 1 class 2"},
                new Classe2 {IsSomthing = false, Name = "String 2 class 2"}
            };

            ObjectsDictionary.Add("Key 1",classes1);
            ObjectsDictionary.Add("Key 2",classes2);

        }

    }
    class Class1
    {
        public int X { get; set; }
        public int Y { get; set; }
    }

    class Classe2
    {
        public String Name { get; set; }
        public Boolean IsSomthing { get; set; }
    }