C# 使用JsonConvert进行反序列化

C# 使用JsonConvert进行反序列化,c#,.net,json,deserialization,json-deserialization,C#,.net,Json,Deserialization,Json Deserialization,我正在尝试编写一个方法,该方法将接受JSON字符串和类型。该方法的目的是反序列化类型指定的对象中的字符串。我希望代码如下所示 public dynamic Deserialize(string serializedStr, Type type) { return JsonConvert.Deserialize<type>(serializedStr); } 公共动态反序列化(字符串序列化器,类型){ 返回JsonConvert.Deserialize(序列化器); }

我正在尝试编写一个方法,该方法将接受JSON字符串和类型。该方法的目的是反序列化类型指定的对象中的字符串。我希望代码如下所示

public dynamic Deserialize(string serializedStr, Type type) {
      return JsonConvert.Deserialize<type>(serializedStr);
 }
公共动态反序列化(字符串序列化器,类型){
返回JsonConvert.Deserialize(序列化器);
}
是否可以使用Newtonsoft.JSon执行此操作?

您需要做的就是:

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

创建一个通用方法,如下所示:

public T DeserializeObject<T>(string serializedStr)
{
    return JsonConvert.DeserializeObject<T>(serializedStr);
}
public T反序列化对象(字符串序列化器)
{
返回JsonConvert.DeserializeObject(SerializedString);
}

下面是一个帮助器扩展方法静态类的小示例,用于服务于双方(如果进入prod,则需要确定范围等):

公共静态类JsonHelpers
{
公共静态T反序列化对象(此字符串jsonString)
{
尝试
{
var concreteObject=Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString);
返回具体对象;
}
接住
{
返回默认值(T);
}
}
公共静态字符串序列化对象(此对象)
{
尝试
{
var jsonString=Newtonsoft.Json.JsonConvert.SerializeObject(concreteObject);
返回jsonString;
}
接住
{
返回null;
}
}
}
用法:

var jsonString=yourclass.SerializeObject()


var classObject=serialisedString.DeserializeObject()

他似乎只有类型实例。这意味着他只能使用使用反射的通用方法。此外,为什么不直接调用Json方法呢?
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;
        }
    }
}