Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我没有';我不知道我用什么课?_C#_Json - Fatal编程技术网

C# 当我没有';我不知道我用什么课?

C# 当我没有';我不知道我用什么课?,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&

我有一个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<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);