c#处理JSON字符串序列化,一般依赖Newtonsoft.Json.dll,通过进一步封装,实现json字符串反序列化
` public class JsonConvert
{
/// <summary>
/// 序列化对象为JSON字符串
/// </summary>
/// <param name="jsonData"></param>
/// <returns></returns>
public static string SerializeObject(object jsonDataObj)
{
object[] obj_param = { jsonDataObj };
return SerializeObject(obj_param);
}
/// <summary>
/// 序列化JSON字符串为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonData"></param>
/// <returns></returns>
public static T DeserializeObject<T>(string jsonData)
{
object[] obj = { jsonData };
return DeserializeObject<T>(obj);
}
/// <summary>
/// 动态调用资源文件
/// </summary>
/// <param name="nameSpace">使用到的命名空间</param>
/// <param name="className">使用到的类名</param>
/// <param name="lpProcName">调用的方法</param>
/// <param name="ObjArray_Parameter">方法的参数数组(如果没有则为null)</param>
/// <returns>如果调用的方法有返回值则返回,如果没有返回null</returns>
public static string SerializeObject(object[] ObjArray_Parameter,string DLLName = "Newtonsoft.Json.dll", string nameSpace = "Newtonsoft.Json", string className = "JsonConvert", string lpProcName = "SerializeObject")
{
try
{
string pathSystemX86 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.SystemX86), DLLName);
Assembly assembly = Assembly.LoadFrom(pathSystemX86);
// Assembly assembly = ImportDllTool.GetAssembly(DLLName);
Type type = assembly.GetType(nameSpace + "." + className);
MethodInfo invokeMethod = type.GetMethod(lpProcName, new Type[] { typeof(object) });//加载需要调用的方法
return (string)invokeMethod.Invoke(null, ObjArray_Parameter);
}
catch (Exception e)
{
return string.Empty;
}
}
/// <summary>
/// 动态调用资源文件
/// </summary>
/// <param name="nameSpace">使用到的命名空间</param>
/// <param name="className">使用到的类名</param>
/// <param name="lpProcName">调用的方法</param>
/// <param name="ObjArray_Parameter">方法的参数数组(如果没有则为null)</param>
/// <returns>如果调用的方法有返回值则返回,如果没有返回null</returns>
public static T DeserializeObject<T>(object[] ObjArray_Parameter,string DLLName = "Newtonsoft.Json.dll", string nameSpace = "Newtonsoft.Json", string className = "JsonConvert", string lpProcName = "DeserializeObject")
{
try
{
string pathSystemX86 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.SystemX86), DLLName);
Assembly assembly = Assembly.LoadFrom(pathSystemX86);
// Assembly assembly = ImportDllTool.GetAssembly(DLLName);
Type type = assembly.GetType(nameSpace + "." + className);
MethodInfo generic = type.GetMethods().Single(k => k.Name.Equals(lpProcName) && k.IsGenericMethodDefinition && k.IsGenericMethod && k.GetParameters().Length == 1 && k.GetParameters()[0].ParameterType == typeof(string));
MethodInfo invokeMethod = generic.MakeGenericMethod(typeof(T));
return (T)invokeMethod.Invoke(null, ObjArray_Parameter);
}
catch (Exception e)
{
return default(T);
}
}
}`
通过反射的方式调用Newtonsoft.Json.dll,dll存放路径为C:\Windows\SysWOW64,也可以指定路径,或运用引用方式调用即可。