如何投一牛顿.Json反序列化的通用对象到自定义对象



我使用牛顿的Json。Net将Json反序列化为。Net对象。我想知道一个人是否可以从一个一般对象转换为一个特定对象。

ie:

object myObject JsonConvert.DeserializeObject<object>(myJsonValue);
myOrder = (Order)myObject;

代码更多的是描述我的问题。我明白一个人可以这样做:

object myObject JsonConvert.DeserializeObject<order>(myJsonValue);

但由于这是一个辅助函数,所以它不可能是"order",而是更一般的东西。

谢谢。编辑:

得到错误:

Getting Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type 'Order'

我要在这里做一个假设,因为这个问题不是100%清楚,但我认为我有一个好主意:

但由于这是一个辅助函数,所以它不可能是"order",而是更一般的东西。

你需要给你的帮助函数添加一个类型参数:

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);

与其反序列化到object,还不如反序列化到JToken

JToken myObject = JsonConvert.DeserializeObject<JToken>(myJsonValue);

你可以使用JToken.ToObject<T>()方法来执行最后的转换:

Order order = myObject.ToObject<Order>();

相关内容

  • 没有找到相关文章

最新更新