json序列化和反序列化(.net2.0和.net3.5)

.net2.0

markerArr="[{Name:'苹果',Price:5.5},{Name:'橘子',Price:2.5},{Name:'柿子',Price:16}]";

Oldlst = (List<MapPointData>)JavaScriptConvert.DeserializeObject(markerArr, typeof(List<MapPointData>));//所有页面数据

.net3.5

C#Json字符串反序列化成List对象类集合

 

using System.IO;

using System.Web.Script.Serialization;

using System.Runtime.Serialization.Json;

public static List<T> JSONStringToList<T>(this string JsonStr)

    {

        JavaScriptSerializer Serializer = new JavaScriptSerializer();

        List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);

        return objs;

    }

 

    public static T Deserialize<T>(string json)

    {

        T obj = Activator.CreateInstance<T>();

        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))

        {

            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

            return (T)serializer.ReadObject(ms);

        }

}

好了,我们来测试下

string JsonStr = "[{Name:'苹果',Price:5.5},{Name:'橘子',Price:2.5},{Name:'柿子',Price:16}]";

List<Product> products = new List<Product>();

products = JSONStringToList<Product>(JsonStr);

//Response.Write(products.Count());

foreach (var item in products)

{

Response.Write(item.Name + ":" + item.Price + "<br />");

}

public class Product

{

public string Name { get; set; }

public double Price { get; set; }

}

结果:

苹果:5.5
橘子
:2.5
柿子:16

C#将对象序列化成JSON字符串

 

using System.Web.Script.Serialization;

public void ProcessRequest(HttpContext context)

        {

            context.Response.ContentType = "text/plain";

 

            List<Product> products = new List<Product>(){

            new Product(){Name="苹果",Price=5.5},

            new Product(){Name="橘子",Price=2.5},

new Product(){Name="干柿子",Price=16.00}

            };

            ProductList productlist = new ProductList();

            productlist.GetProducts = products;

            context.Response.Write(new JavaScriptSerializer().Serialize(productlist));

        }

public bool IsReusable

{

get

{

                return false;

}

}

 

        public class Product

        {

            public string Name { get; set; }

            public double Price { get; set; }

        }

 

        public class ProductList

        {

            public List<Product> GetProducts { get; set; }

        }

 

生成的JSON结果如下:

{"GetProducts":[{"Name":"苹果","Price":5.5},{"Name":"橘子","Price":2.5},{"Name":"柿子","Price":16}]}
posted @ 2011-06-14 08:45  plccs  阅读(786)  评论(0编辑  收藏  举报