我有一个json
var j = @"
[{"Name":"John","Age":27},
{"Name":"Mike","Age":30},
{"Name":"Eric","Age":21}
]";
Run Code Online (Sandbox Code Playgroud)
和班级:
public class Worker
{
public string Name{set;get;}
public int Age{set;get;}
}
Run Code Online (Sandbox Code Playgroud)
以及如何通过以下方式对其进行反序列化Newtonsoft.Json:
List<Worker> videogames = JsonConvert.DeserializeObject<List<Worker>>(j);
Run Code Online (Sandbox Code Playgroud)
但是,如果我不知道我想要反序列化哪个类并只有一个类型呢?
var worker = new Worker();
Type myType = worker.GetType();
Run Code Online (Sandbox Code Playgroud)
在这种情况下如何反序列化这个json字符串?
只需使用接受a 的JsonConvert.DeserializeObject重载Type,传入构造的列表类型:
Type listType = typeof(List<>).MakeGenericType(myType);
object list = JsonConvert.DeserializeObject(json, listType);
Run Code Online (Sandbox Code Playgroud)
当然,之后您将无法以静态类型安全的方式使用它 - 可能需要投射它 - 但如果您尝试使用仅在执行时已知的类型,则这是不可避免的.
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |