序列化类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;
using System.IO;
using System.Runtime.Serialization.Json;
namespace list序列化成json
{
public class ListandJson
{
//序列化成JSON
public static string GetJsonString<T>(List<T> source)
{
return new JavaScriptSerializer().Serialize(source);
}
//JSON反序列化成list
public static List<T> JSONStringToList<T>(string JsonStr)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);
return objs;
}
//将类序列化成json
public static string Serialize<T>(T a)
{
DataContractJsonSerializer json = new DataContractJsonSerializer(a.GetType());
using (MemoryStream stream = new MemoryStream())
{
json.WriteObject(stream, a);
return Encoding.UTF8.GetString(stream.ToArray());
}
}
//将json反序列化成类
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);
}
}
}
}
应用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Script.Serialization;
using System.Runtime.Serialization;
namespace list序列化成json
{
class Program
{
static void Main(string[] args)
{
string JsonStr = "[{Name:'苹果',Price:5.5},{Name:'橘子',Price:2.5},{Name:'柿子',Price:16}]";
string Json = "";
List<Product> products = new List<Product>()
{
new Product(){Name="苹果",Price=5.5},
new Product(){Name="橘子",Price=2.5},
new Product(){Name="干柿子",Price=16.00}
};
Console.WriteLine(ListandJson.GetJsonString(products));
List<Product> productList = new List<Product>();
productList = ListandJson.JSONStringToList<Product>(JsonStr);
Json = ListandJson.Serialize(new Product() { Name = "苹果", Price = 5.5 });
Product m = ListandJson.Deserialize<Product>(Json);
Console.Read();
}
}
[DataContract]
public class Product
{
[DataMember]
public string Name { get; set; }
[DataMember]
public double Price { get; set; }
}
}