首页 > 语言 > JavaScript > 正文

浅析JavaScriptSerializer类的序列化与反序列化

2024-05-06 15:06:36
字体:
来源:转载
供稿:网友

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象。要添加System.Web.Extensions.dll的引用。该类位于System.Web.Script.Serialization命名空间下。

一、属性

MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度。
RecursionLimit 获取或设置用于约束要处理的对象级别的数目的限制。

二、方法

ConvertToType<(Of <(T>)>) 将给定对象转换为指定类型。
Deserialize<(Of <(T>)>) 将指定的 JSON 字符串转换为 T 类型的对象。
DeserializeObject 将指定的 JSON 字符串转换为对象图。
RegisterConverters 使用 JavaScriptSerializer 实例注册自定义转换器。
Serialize 已重载。 将对象转换为 JSON 字符串。

 给个示例,主要就是了解了一下Serialize与Deserialize两个方法,控制器代码:

public class HomeController : Controller {  public ActionResult Index()  {   return View();  }  public ActionResult GetJson()  {   JavaScriptSerializer jss = new JavaScriptSerializer();   Person p = new Person(1, "张飞", 20);   string json = jss.Serialize(p); //序列化成JSON   Person p1 = jss.Deserialize<Person>(json); //再反序列化为Person对象 注意此方法要求目标类有无参构造函数   //return Json(json, "text/json");  //很好用,但是返回的终归是字符串,返回到前台要解析一下才能变成javascript对象。   return Json(new { Id = p1.Id, Name = p1.Name, Age = p1.Age }, "text/json");//如果这样写,返回到javascript中是不用再解析的,直接就是javascript对象  } } public class Person {  public Person()  { }  public Person(int id, string name, int age)  {   this.Id = id;   this.Name = name;   this.Age = age;  }  public int Id { get; set; }  public string Name { get; set; }  public int Age { get; set; } }

    前台HTML代码:

<html><head> <title>javascriptSerializer类测试</title> <script src="/jQuery.1.8.3.js" type="text/javascript"></script> <script type="text/javascript">  $(function () {   $(":button").click(function () {    $.ajax({     url: "/Home/GetJson",     dataType: "json",     type: "post",     success: function (response) {//      var data = JSON.parse(response);//      $("#Id").text(data.Id);//      $("#Name").text(data.Name);//      $("#Age").text(data.Age);      $("#Id").text(response.Id);      $("#Name").text(response.Name);      $("#Age").text(response.Age);     }    })   })  }) </script></head><body> <ul>  <li id="Id"></li>  <li id="Name"></li>  <li id="Age"></li> </ul> <input type="button" value="确认" /></body></html>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选