所以followwing工作得很好,从字符串json给我一个Team对象:
var found = JsonConvert.DeserializeObject<Team>(json);
Run Code Online (Sandbox Code Playgroud)
但如果直到运行时我才知道类型怎么办?假设我有上面的字符串json,但我还有另一个字符串类型名称?例如,这不起作用:
var found = JsonConvert.DeserializeObject(json, Type.GetType("Team"));
Run Code Online (Sandbox Code Playgroud)
无法将"Newtonsoft.Json.Linq.JArray"类型的对象强制转换为...
这对我有用:
var type = Type.GetType("My.Namespace.Class");
var myObj = JsonConvert.DeserializeObject(item, type);
Run Code Online (Sandbox Code Playgroud)
诀窍是type通过提供正确的类名来确保它不为null.如果是,反序列化仍然可以工作,但输出将不是您想要的类型.有关详细信息,请参阅MSDNGetType.