我正在使用Newton的Json.Net将Json反序列化为.NET对象。我试图了解是否可以从一般对象转换为特定对象。
即:
object myObject JsonConvert.DeserializeObject<object>(myJsonValue);
myOrder = (Order)myObject;
代码更多的是解释我的问题。我明白可以做到这一点:
object myObject JsonConvert.DeserializeObject<order>(myJsonValue);
但是由于这是一个辅助函数,所以它不能是&#34; order&#34;,而是更通用的东西。
感谢。
编辑:
获取错误:
Getting Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type 'Order'
答案 0 :(得分:3)
我会在这里做出一个假设,因为问题不是100%明确,但我认为我有一个好主意:
但是由于这是一个辅助函数,所以它不能是&#34; order&#34;,而是更通用的东西。
您需要在辅助函数中添加一个类型参数:
public class SomeHelper
{
public T Deserialize<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
}
使用它:
SomeHelper helper = new SomeHelper();
string json = "...";
Order order = helper.Deserialize<Order>(json);
答案 1 :(得分:1)
不是反序列化为object
,而是使用反序列化为JToken
的内容更容易。
JToken myObject = JsonConvert.DeserializeObject<JToken>(myJsonValue);
然后,您可以使用JToken.ToObject<T>()
方法执行最终转换:
Order order = myObject.ToObject<Order>();