public static class JsonOperation
{
private static readonly JavaScriptSerializer serializer = new JavaScriptSerializer();
public static string Serialize(object obj)
{
return serializer.Serialize(obj);
}
public static T Deserialize<T>(string json)
{
return serializer.Deserialize<T>(json);
}
public static object Deserialize(string typeFullName, string json)
{
return typeof(JsonOperation)
.GetMethod("Deserialize", new[] { typeof(string) })
.MakeGenericMethod(Type.GetType(typeFullName))
.Invoke(null, new object[] { json });
}
}
注:
(1)GetMethod
用來獲取指定類的某個函數(shù)亚斋,第一個參數(shù)是函數(shù)名,第二個參數(shù)是函數(shù)的參數(shù)類型列表帅刊。
(2)MakeGenericMethod
指定范型方法的類型參數(shù)赖瞒,返回一個MethodInfo
對象蚤假。
(3)Invoke
這里用來調(diào)用實例方法,還可以用來調(diào)用類方法磷仰。如果調(diào)用的是實例方法,Invoke
的第一個參數(shù)是該實例伺通。如果調(diào)用類方法罐监,Invoke
的第一個參數(shù)是null
弓柱。