我正在尝试编写一个接受JSON字符串和Type的方法。该方法的目的是反序列化该类型指定的对象中的字符串。我希望代码看起来像下面的东西
public dynamic Deserialize(string serializedStr, Type type) {
return JsonConvert.Deserialize<type>(serializedStr);
}
是否可以使用Newtonsoft.JSon进行此类操作?
答案 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>();