使用JsonConvert进行反序列化

时间:2016-03-10 14:50:14

标签: c# .net json deserialization json-deserialization

我正在尝试编写一个接受JSON字符串和Type的方法。该方法的目的是反序列化该类型指定的对象中的字符串。我希望代码看起来像下面的东西

public dynamic Deserialize(string serializedStr, Type type) {
      return JsonConvert.Deserialize<type>(serializedStr);
 }

是否可以使用Newtonsoft.JSon进行此类操作?

3 个答案:

答案 0 :(得分:4)

您所要做的就是:

public dynamic Deserialize(string serializedStr, Type type)
{
    return JsonConvert.DeserializeObject(serializedStr, type);
}

答案 1 :(得分:2)

创建一个这样的通用方法:

public T DeserializeObject<T>(string serializedStr)
{
    return JsonConvert.DeserializeObject<T>(serializedStr);
}

答案 2 :(得分:1)

这是一个辅助扩展方法静态类的一个小例子,用于服务双方(如果进入prod需要范围等):

public static class JsonHelpers
{
    public static T DeserializeObject<T>(this string jsonString)
    {
        try
        {
            var concreteObject = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(jsonString);
            return concreteObject;
        }
        catch
        {
            return default(T);
        }
    }
    public static string SerializeObject<T>(this T concreteObject)
    {
        try
        {
            var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(concreteObject);
            return jsonString;
        }
        catch
        {
            return null;
        }
    }
}

用法:

var jsonString = yourclass.SerializeObject();

var classObject = serialisedString.DeserializeObject<yourClass>();