C# 使用不同类型的值解析字典
我有一个Json,它返回如下内容: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
"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; }
}