C# 当我没有';我不知道我用什么课?
我有一个jsonC# 当我没有';我不知道我用什么课?,c#,json,C#,Json,我有一个json var j = @" [{"Name":"John","Age":27}, {"Name":"Mike","Age":30}, {"Name":"Eric","Age":21} ]"; 和类别: public class Worker { public string Name{set;get;} public int Age{set;get;} } 以及如何使用Newtonsoft.Json对其进行反序列化: List&
var j = @"
[{"Name":"John","Age":27},
{"Name":"Mike","Age":30},
{"Name":"Eric","Age":21}
]";
和类别:
public class Worker
{
public string Name{set;get;}
public int Age{set;get;}
}
以及如何使用Newtonsoft.Json对其进行反序列化:
List<Worker> videogames = JsonConvert.DeserializeObject<List<Worker>>(j);
在这种情况下,如何反序列化此json字符串?只需使用接受类型的,传入构造的列表类型:
Type listType = typeof(List<>).MakeGenericType(myType);
object list = JsonConvert.DeserializeObject(json, listType);
Type listType=typeof(列表)。MakeGenericType(myType);
object list=JsonConvert.DeserializeObject(json,listType);
当然,之后您将无法以静态类型安全的方式使用它-可能需要强制转换它-但如果您试图使用仅在执行时已知的类型,则这是不可避免的。如果您知道您正在反序列化一个特定类型列表的对象,如果您知道正在使用的类型的名称,那么您可以使用泛型为您提供严格类型化的内容。例如:
public static List<T> DeserializeJsonList<T>(string json)
{
return JsonConvert.DeserializeObject<List<T>>(json);
}
公共静态列表反序列化JSONList(字符串json)
{
返回JsonConvert.DeserializeObject(json);
}
用这样的话,你可以写:
string myJson = "[json goes here]";
List<MyType> myList = DeserializeJsonList<MyType>(string json);
string myJson=“[json在这里]”;
List myList=反序列化JSONList(字符串json);
但是,如果类型是匿名的(您只有一个类型
对象实例,那么您可能不得不求助于Jon Skeet的答案。它不是重复的。另一个问题问的是不同的问题。
string myJson = "[json goes here]";
List<MyType> myList = DeserializeJsonList<MyType>(string json);