首先,先简单的谈一下什么是序列化与反序列化,序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化(Deserialization)对象的状态,重新创建该对象。

  一般我们把Json的序列化与反序列化用在哪些地方呢?对于网站开发来说,一般我们会用Json来进行前台和后台的数据传递(常与Ajax一起使用),而这个过程就涉及到了Json的序列化与反序列化。

那么我们就来简单看一下Json的序列化与反序列化实例吧:——使用Ajax异步加载用户数据到前台,通过Json传递数据

一个对象:(用户存储用户的一些信息,传输时会序列化为对应的Json数据)

//用户部分信息
public class UserInfo
{
public string Name { get; set; }
public string HeadPortrait { get; set; }
public int Grade { get; set; }
public string Major { get; set; }
public int Class { get; set; }
public string Address { get; set; }
public UserInfo(string name, string headPortrait, int grade, string major, int userClass, string address)
{
Name = name;
HeadPortrait = headPortrait;
Grade = grade;
Major = major;
Class = userClass;
Address = address;
}
}

后台HomeController里面的一个方法:(使用Json传递数据)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using Test.Models;
using System.Text.RegularExpressions;
using System.IO;
using System.Web.Script.Serialization; namespace Test
{
public class HomeController : Controller
{
//entity:Entity Framework数据上下文访问实例
WebAppContext entity = new WebAppContext(); /// <summary>
/// 异步获取用户信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult AjaxGetUserInfos()
{
var userInfos = new List<UserInfo>();
var users = entity.Users.Where(m => m.Address.Length > ).OrderBy(m => m.Address);
foreach (var user in users)
{
userInfos.Add(new UserInfo(user.Name, user.HeadPortrait, user.Grade, user.Major, user.Class, user.Address));
}
return Json((new JavaScriptSerializer()).Serialize(userInfos));
}
}
}

  前台一个Js方法:(使用Ajax异步加载用户数据到前台)

//使用ajax获取数据
function AjaxGetData() {
$.ajax({
url: '/Home/AjaxGetUserInfos',
type: 'post',
async: true,
success: function (data) {
var userDatas = eval('(' + data + ')');
var n = userDatas.length;
var i = 0;
for(i = 0; i < n; i++)
{
//AddUserInfo:自己第一个的将用户信息添加到页面上的函数,可根据自己的需求重写
AddUserInfo(userDatas[i].Name, userDatas[i].HeadPortrait, userDatas[i].Grade, userDatas[i].Major, userDatas[i].Class, userDatas[i].Address);
}
},
error: function () {
alert("数据加载失败,请刷新页面重试!");
}
});
}

这个例子是前台请求数据,在后台序列化,前台反序列化,当然也可以前台发送数据,在前台先将要传递的数据序列化为Json数据,在后台才来反序列化。

 此次知识分享就到这,敬请期待下一次的分享。^_^

<我的博客主页>:http://www.cnblogs.com/forcheng/

<Wing工作室主页>:http://www.wingstudio.org/

ASP.NET MVC 网站开发总结(六)——简谈Json的序列化与反序列化的更多相关文章

  1. ASP.NET MVC 网站开发总结(三) ——图片截图上传

    本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...

  2. ASP.NET MVC 网站开发总结(四)——校友平台开发总结

    又历经一个多月的努力,学校的一个校友平台项目也接近内测的尾声了,简单的总结一下这次的项目开发. 与上次做Wing工作室的门户网站相比,同样是团队开发,参与的人员多了一个,用的时间也差不多一个月,但从总 ...

  3. ASP.NET MVC 网站开发总结(一)

    历经一个多月的努力,工作室的门户网站(http://www.wingstudio.org)终于结束了内部公测. 仔细算一下,大概把网站开发出1.0版本大概用了一个月的时间(主要是利用课余时间),其后大 ...

  4. ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

    首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...

  5. ASP.NET MVC 网站开发总结(七)——C#操作图片:多张图的拼接(旋转)

    其实用C#来操作图片的拼接就是在用Graphic画图.个人感觉还是挺有趣的,各种类库提供了丰富多彩的功能. 源代码(移植到一个简单的C#程序中,并没有放在ASP.NET项目中): using Syst ...

  6. ASP.NET MVC 网站开发总结(二)——一个或多个文件的异步或同步上传

    简而言之,直接用代码展示如何实现文件的上传,这里需要使用到一个bootstrap的文件上传插件File Input(请自行下载). 前台页面: <!----> <!DOCTYPE h ...

  7. ASP.NET MVC5 网站开发实践(一) - 项目框架

    前几天算是开题了,关于怎么做自己想了很多,但毕竟没做过项目既不知道这些想法有无必要,也不知道能不能实现,不过邓爷爷说过"摸着石头过河"吧.这段时间看了一些博主的文章收获很大,特别是 ...

  8. ASP.NET MVC5 网站开发实践(一) - 项目框架(转)

    前几天算是开题了,关于怎么做自己想了很多,但毕竟没做过项目既不知道这些想法有无必要,也不知道能不能实现,不过邓爷爷说过“摸着石头过河”吧.这段时间看了一些博主的文章收获很大,特别是@kencery,依 ...

  9. ASP.NET MVC企业开发的基本环境

    ASP.NET MVC企业开发的基本环境[资源服务器概念] 学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang  茗洋  EasyUI1.3.4   ...

随机推荐

  1. Spring Trasnaction管理(2)- 事务AOP

    问题导读 spring AOP是在如何进行的 spring 用cglib和jdkProxy管理的事务有何区别 Spring AOP管理 Spring主要的两个核心功能IOC与AOP.IOC的代码解析可 ...

  2. netstat 1

    lsof -i   :8086 第二个参数需要:开头 netstat linux  -a (all)显示所有选项,默认不显示LISTEN相关 理解这个很关键, 这是为什么我们netstat -a 不显 ...

  3. 字符串正则替换replace第二个参数是函数的问题

    按照JS高程的说法,如下 replace()方法的第二个参数也可以是一个函数.在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项.模式匹配项在字符串中的位置和原始 ...

  4. Node.js入门:异步IO

    异步IO     在操作系统中,程序运行的空间分为内核空间和用户空间.我们常常提起的异步I/O,其实质是用户空间中的程序不用依赖内核空间中的I/O操作实际完成,即可进行后续任务. 同步IO的并行模式 ...

  5. [转载] fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)

    说明: 转载自http://www.cnblogs.com/skywang12345/p/3308762.html概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对 ...

  6. Atitit attilax在自然语言处理领域的成果

    Atitit attilax在自然语言处理领域的成果 1.1. 完整的自然语言架构方案(词汇,语法,文字的选型与搭配)1 1.2. 中文分词1 1.3. 全文检索1 1.4. 中文 阿拉伯文 英文的简 ...

  7. Storm 实战:构建大数据实时计算

    Storm 实战:构建大数据实时计算(阿里巴巴集团技术丛书,大数据丛书.大型互联网公司大数据实时处理干货分享!来自淘宝一线技术团队的丰富实践,快速掌握Storm技术精髓!) 阿里巴巴集团数据平台事业部 ...

  8. js 图片轮播(一)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. Html5+asp.net mvc 图片压缩上传

    在做图片上传时,大图片如果没有压缩直接上传时间会非常长,因为有的图片太大,传到服务器上再压缩太慢了,而且损耗流量. 思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法 ...

  10. 将图片的二进制字节字符串在HTML页面以图片形式输出

    具体实现代码如下: 1.新建一个一般处理程序: Image.ashx using System; using System.Collections.Generic; using System.Linq ...