使用NewtonSoft,如何在不知道类型的情况下反序列化,直到运行时



所以后续工作得很好,从字符串 json 中给了我一个 Team 对象:

var found = JsonConvert.DeserializeObject<Team>(json);

但是,如果我直到运行时才知道类型怎么办? 假设我有上面的字符串 json,但我还有另一个类型名称的字符串? 例如,这不起作用:

var found = JsonConvert.DeserializeObject(json, Type.GetType("Team"));

无法将类型为"Newtonsoft.Json.Linq.JArray"的对象转换为类型...

这对我有用:

var type = Type.GetType("My.Namespace.Class");
var myObj = JsonConvert.DeserializeObject(item, type);

诀窍是通过提供正确的类名来确保type不为 null。如果是,反序列化仍然可以工作,但输出不会是您想要的类型。有关 GetType 的详细信息,请参阅 MSDN

相关内容

  • 没有找到相关文章

最新更新