JSON 序列化和反序列化——JavaScriptSerializer实现

时间:2022-08-28 10:33:03

一、

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。您无法访问序列化程序的此实例。但是,此类公开了公共 API。因此,当您希望在托管代码中使用 JavaScript 对象符号 (JSON) 时可以使用此类。

若要序列化对象,请使用 Serialize 方法。若要反序列化 JSON 字符串,请使用 Deserialize 或 DeserializeObject 方法。若要序列化和反序列化 JavaScriptSerializer 本身不支持的类型,请使用 JavaScriptConverter 类来实现自定义转换器。然后,使用 RegisterConverters 方法注册转换器。
托管类型和 JSON 之间的映射

下表显示序列化进程中托管类型和 JSON 之间的映射。JavaScriptSerializer 本身支持这些托管类型。将 JSON 字符串反序列化为托管类型时,采用相同的映射。但是,反序列化可能是非对称的,并非所有可序列化的托管类型都可以从 JSON 反序列化得到。

二、

通过JavaScriptSerializer来实现。它的名字空间为:System.Web.Script.Serialization

如果要使用它,还须添加

System.Web.Extensions库文件引用

参考实体类:Customer

public class Customer

{

public int Unid { get; set; }

public string CustomerName { get; set; }

}

类JavaScriptSerializer描述:为启用 AFAX 的应用程序提供序列化和反序列化功能。

(一) 序列化

方法:public string Serialize(Object obj),用于将对象转换为 JSON 字符串

public string ScriptSerialize(Customer customer)

{

JavaScriptSerializer js = new JavaScriptSerializer();

return js.Serialize(customer);

}

测试:

Customer cc = new Customer { Unid = 1, CustomerName = "John" };

string strJson = ScriptSerialize(cc);

Console.WriteLine(strJson);

(二)反序列化

public Customer ScriptDeserialize(string strJson)

{

JavaScriptSerializer js = new JavaScriptSerializer();

return js.Deserialize<Customer>(strJson);

}

通过Deserialize<T>方法来实现。

测试:

Customer c1 = ScriptDeserialize(strJson);

Console.WriteLine(c1.Unid + " " + c1.CustomerName);

(三)方法泛型

public string ScriptSerialize<T>(T t)

{

JavaScriptSerializer js = new JavaScriptSerializer();

return js.Serialize(t);

}

public T ScriptDeserialize<T>(string strJson)

{

JavaScriptSerializer js = new JavaScriptSerializer();

return js.Deserialize<T>(strJson);

}

测试:

Customer cc = new Customer { Unid = 1, CustomerName = "John" };

string strJson = ScriptSerialize<Customer>(cc);

Console.WriteLine(strJson);

Customer c1 = ScriptDeserialize<Customer>(strJson);

Console.WriteLine(c1.Unid + " " + c1.CustomerName);

JSON 序列化和反序列化——JavaScriptSerializer实现的更多相关文章

  1. C&num; JSON 序列化和反序列化——JavaScriptSerializer实现

    一. JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.您无法访问序列化程序的此实例.但是,此类公开了公共 API.因此, ...

  2. JSON 序列化和反序列化&mdash&semi;&mdash&semi;JavaScriptSerializer实现

    一. JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.您无法访问序列化程序的此实例.但是,此类公开了公共 API.因此, ...

  3. Asp&period;Net中JSON的序列化和反序列化-----JavaScriptSerializer &comma;加上自己工作心得

    在工作中和手机通信用到web服务和javascriptSerializer,返回json数据,供手机端调用,一开始返回的数据是一大堆,比如 [{"word_picture9":&q ...

  4. C&num;中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  5. Net中JSON序列化和反序列化处理(日期时间特殊处理)

    0  缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...

  6. 在net中json序列化与反序列化

    准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则: 数据在键值对中 数据由逗号分隔 花括 ...

  7. 转&colon;Json序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...

  8. 在net中json序列化与反序列化 面向对象六大原则 &lpar;第一篇&rpar; 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变

    在net中json序列化与反序列化   准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...

  9. DotNet的JSON序列化与反序列化

    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...

随机推荐

  1. 再看Ajax

    再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- ...

  2. 面向对象之abstract

    1.abstract class,抽象类不能被实例化,只能被继承:抽象类中可以包含非抽象方法 2.abstract method();抽象方法只能在抽象类中进行声明,并且没有方法体,非抽象继承子类中必 ...

  3. 转。webapp开发小tips

     备忘 - Q:  webapp点击一个按钮调用系统拨号: <a href="tel:12345654321">打电话给我</a> <a href=& ...

  4. 在Windows 10上利用seafile搭建个人云服务

    参考seafile官方文档 安装Python 2.7.11 32位版 下载地址:https://www.python.org/downloads/release/python-2711/ 选择 32位 ...

  5. sass中文注释的解决方法和一些简单用法

    最近用sass来编写项目中的css,发现不能添加中文注释,报错如下 于是查阅了一下发现需要在scss文件顶部加上@charset "utf-8"即可解决. 在此顺便记录一些sass ...

  6. 五、同一台MySQL服务器启动多个端口-为读写分离做准备

    一.安装数据库 https://www.cnblogs.com/huiyi0521/p/10113280.html 二.使用 mysql 命令为 root 用户授权 mysql 远程连接服务 mysq ...

  7. jquery-ui弹框登录前端写法

    新建一个div: <div class="container" id="loginForm" hidden> <h4 class=" ...

  8. Deque(队列)

    目录 Deque 概述 特点 常用方法 双向队列操作 ArrayDeque Deque 概述 一个线性 collection,支持在两端插入和移除元素.名称 deque 是"double e ...

  9. 20175310 《Java程序设计》第1周学习总结(2)

    20175310 <Java程序设计>第1周学习总结(2) 教材学习内容总结 本周学习了教材的第一章内容,通过看微课的方式,自主学习,教材上讲的比较简单,主要的问题都在调试代码上,还有一两 ...

  10. 利用Node 搭配uglify-js压缩js文件,批量下载图片到本地

    Node的便民技巧-- 压缩代码 下载图片 压缩代码 相信很多前端的同学都会在上线前压缩JS代码,现在的Gulp Webpack Grunt......都能轻松实现.但问题来了,这些都不会,难道就要面 ...