您的位置:首页 > Web前端 > JavaScript

ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON

2016-09-28 15:49 836 查看
在JavaScriptSerializer中,我们可以看到下面可以使用的方法或者构造函数,它们都是实例方法:

MemberDescription
JavaScriptSerializer()构造函数,用于创建一个新的JavaScriptSerializer对象,不指定JavaScriptTypeResolver
JavaScriptSerializer(JavaScriptTypeResolver)构造函数,用于创建一个新的JavaScriptSerializer对象,并使用指定的JavaScriptTypeResolver来映射特定类型与标识字符串。
ConvertToType<T>(Object)将给定对象转化成类型T。
Deserialize<T>(String)将JSON字符串转化为类型T。
DeserializeObject(String)将JSON字符串转化为一个对象。
MaxJsonLength获取或者设置序列化时能够接受的JSON字符串的最大长度。
RecursionLimit获取或者设置在反序列化JSON字符串时递归的最大深度。
RegisterConverters(IEnumerable<JavaScriptConverter>)注册序列化过程中使用的JavaScriptConveter对象。
Serialize(Object)将一个对象序列化成JSON字符串。
Serialize(Object, StringBuilder)将一个对象序列化到一个StringBuilder中。
C#代码:

//类
     public class UserInfo
{
public Int Id { get; set; }
public String UserName { get; set; }
public DateTime Time { get; set; }
}
//代码
public void js()
{
        //源数据
UserInfo info = new UserInfo();
info.Id = 1;
info.UserName = "张三";
info.Time = DateTime.Now;
       //初始化
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
       //序列化,strJson就是josn串
String strJson = jss.Serialize(info);//输出结果:{"Id":1,"UserName":"张三","Time":"\/Date(1297950721668)\/"}

        //方式一:反序列化,转成model
UserInfo info2 = jss.Deserialize<UserInfo>(strJson);

        //方式二:JavaScriptObject
JavaScriptObject jObject = JavaScriptConvert.DeserializeObject(strJson) as JavaScriptObject;
string UserName = jObject["UserName"].ToString();
string Time = jObject["Time"].ToString();//时间格式需要特殊处理
Time = Time.Replace("/Date(","").Replace(")/","");//替换掉/Date(),只保留里面的数字
Time = ConvertJsonDateToDateString(Convert.ToInt64(Time));

//如果josn里还包含josn,那么就需要这么写。
JavaScriptArray JsonData = (JavaScriptArray)jObject["records"];
if (JsonData.Count > 0)
{
for (int m = 0; m < JsonData.Count; m++)
{
JavaScriptObject orderObj = (JavaScriptObject)JsonData[m];
}
}
}
/// <summary>
/// 将Json序列化的时间由/Date(1503996878)/转为字符串
/// </summary>
public string ConvertJsonDateToDateString(long Time)
{
string result = string.Empty;
DateTime dt = new DateTime(1970, 1, 1);
dt = dt.AddMilliseconds(Time);
dt = dt.ToLocalTime();
result = dt.ToString("yyyy/MM/dd HH:mm:ss");
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐