一、C#将对象序列号为Json字符串
public string GetJsonString()
{
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;
return new JavaScriptSerializer().Serialize(productlist));
}
public class Product
{
public string Name { get; set; }
public double Price { get; set; }
}
public class ProductList
{
public List<Product> GetProducts { get; set; }
}
这里主要是使用JavaScriptSerializer来实现序列化操作,这样我们就可以把对象转换成Json格式的字符串,生成的结果如下:
{"GetProducts":[{"Name":"苹果","Price":5.5},{"Name":"橘子","Price":2.5},{"Name":"柿子","Price":16}]}
二、把Json字符串序列化为对象
String jsonStr = "[{Name: '苹果', Price: 5.5}, {Name: '橘子', Price: 2.5}, {Name: '柿子', Price: 16}]";
List<Product> products = new List<Product>();
products = JSONStringToList<Product>(jsonStr);
foreach (var item in products)
{
Console.WriteLine(item.Name + ": " + item.Price);
}
public static List<T> JSONStringToList<T>(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);
}
}
}
Note:
DataContractJsonSerializer命名空间为: System.Web.Script.Serialization
JavaScriptSerializer命名空间为:System.Web.Script.Serialization