在.NET Framework 4.5中,JSON的序列化与反序列化编写如下:
引用命名空间:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.IO; 6 using System.Text; 7 using System.Runtime.Serialization.Json; 8 using System.Runtime; 9 using System.Net;
程序编程:
1 /// <summary> 2 /// JSON序列化 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 /// <param name="JsonStr"></param> 6 /// <returns></returns> 7 8 public static List<T> JSONStringToList<T>(this string JsonStr) 9 { 10 System.Web.Script.Serialization.JavaScriptSerializer Serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 11 List<T> objs=Serializer.Deserialize<List<T>>(JsonStr); 12 return objs; 13 }
1 /// <summary> 2 /// JSON反序列化 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 /// <param name="JsonStr"></param> 6 /// <returns></returns> 7 8 public static T Deserializer<T>(string json) 9 { 10 T obj=Activator.CreateInstance<T>(); 11 using(MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) 12 { 13 DataContractJsonSerializer serializer = new DataConstractJsonSerializer(obj.GetType()); 14 return (T)serializer.ReadObject(ms); 15 } 16 }
在.NET Framework 2.0中,JSON的序列化与反序列化编写如下:
首先我下载了一个Newtonsoft.Json.Net20.dll文件,在程序中引用;
引用命名空间:
1 using System; 2 using System.Collections.Generic; 3 using System.Web; 4 using System.IO; 5 using System.Text; 6 using System.Runtime.Serialization; 7 using System.Runtime; 8 using System.Net; 9 using Newtonsoft.Json; //添加Newtonsoft.Json.Net20.dll引用之后 10 //可以引用此命名空间 11 //在2.0中不能引用using System.Runtime.Serialization.Json;命名空间
程序编程:
1 /// <summary> 2 /// JSON序列化 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 /// <param name="JsonStr"></param> 6 /// <returns></returns> 7 public static List<T> JSONStringToList<T>(string JsonStr) 8 { 9 JsonSerializer serializer = new JsonSerializer(); 10 StringReader sr = new StringReader(JsonStr); 11 object o = serializer.Deserializer(new JsonTextReader(sr),typeof(List<T>)); 12 List<T> list = o as List<T>; 13 return list; 14 15 }
/// <summary> /// JSON反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="json"></param> /// <returns></returns> public static T Deserialize<T>(string json) { T t = (T)JsonConvert.DeserializeObject(json); return t; }
在2.0中这样编写是能够生成成功的,但在添加引用时发现Microsoft.CSharp没有找到2.0版本的。
所以程序运行起来还是会报错:
(关于ASP.NET中JSON的序列化和反序列化的知识可详看这位大神的文章:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html)
目前仍没有找到2.0版本的Microsoft.CSharp引用。
.NET Framework 4.5 与 .NET Framework 2.0中JSON序列化反序列化的差别
原文:http://www.cnblogs.com/menliu/p/5284624.html