1、Json序列化为List时需要引用:
using System.Collections.Generic;
using System.Web.Script.Serialization;
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace Json_S
{
/// <summary>
/// JsonToList 的摘要说明
/// </summary>
public static class JsonToList
{
/// <summary>
/// 原始Json字符串反序列化为泛型集合
/// </summary>
/// <typeparam name="T">反序列化的类型</typeparam>
/// <param name="JsonStr">原始Json字符串</param>
/// <returns>反序列化后的泛型集合</returns>
public static List<T> JSONStringToList<T>(this string JsonStr)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);
return objs;
}
}
}
2、需要序列化为什么类型的定义
using System;
using System.Runtime.Serialization;
namespace Shopping
{
[DataContract]
public class SpecificationsList
{
/// <summary>
/// 属性1名称
/// </summary>
[DataMember]
public string SpecificationsID1 { set; get; }
/// <summary>
/// 属性1值
/// </summary>
[DataMember]
public string SpecificationsValue1 { set; get; }
/// <summary>
/// 属性2名称
/// </summary>
[DataMember]
public string SpecificationsID2 { set; get; }
/// <summary>
/// 属性2值
/// </summary>
[DataMember]
public string SpecificationsValue2 { set; get; }
/// <summary>
/// 属性3名称
/// </summary>
[DataMember]
public string SpecificationsID3 { set; get; }
/// <summary>
/// 属性3值
/// </summary>
[DataMember]
public string SpecificationsValue3 { set; get; }
/// <summary>
/// 进价
/// </summary>
[DataMember]
public string CostPrice { set; get; }
/// <summary>
/// 单价
/// </summary>
[DataMember]
public string MarketPrice { set; get; }
/// <summary>
/// 市场价
/// </summary>
[DataMember]
public string Price { set; get; }
/// <summary>
/// 库存
/// </summary>
[DataMember]
public string Inventory { set; get; }
}
}
3、使用方法
List<Shopping.SpecificationsList> model = Json_S.JsonToList.JSONStringToList<Shopping.SpecificationsList>(Json_str);
4.Json序列化和反序列化方法
/// <summary>
/// Json序列化帮助类
/// 提供一系列的关于Json序列化/反序列化的操作
public class json
{
/// <summary>
/// 原始泛型对象序列化为Json字符串,返回序列化后的Json字符串
/// 序列化失败则返回null
/// </summary>
/// <typeparam name="T">序列化的类型</typeparam>
/// <param name="t">原始泛型对象</param>
/// <returns>序列化后的Json字符串</returns>
public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
/// <summary>
/// 原始Json字符串反序列化为泛型对象,返回反序列化后的泛型对象
/// 序列化失败则返回泛型默认值
/// </summary>
/// <typeparam name="T">反序列化的类型</typeparam>
/// <param name="jsonString">原始Json字符串</param>
/// <returns>反序列化后的泛型对象</returns>
public static T JsonDeserialize<T>(string jsonString)
{
//处理错误参数
if (String.IsNullOrEmpty(jsonString))
{
return default(T);
}
else { }
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}
}
5、使用方法
1.反序列化
Shopping.SpecificationsList list = Njson.json.JsonDeserialize<Shopping.SpecificationsList>(Json_str);
2.序列化
List<about> list = new List<about>();
about bt = new about();
bt.Adds = rice.Tables[0].Rows[0]["desn"].ToString();
list.Add(bt);
string str= Json.Serialize(list)
自己做的笔记仅供参考,不喜勿喷,谢谢!!1