zoukankan      html  css  js  c++  java
  • ASP.NET MVC 网站开发总结(六)——简谈Json的序列化与反序列化

          首先,先简单的谈一下什么是序列化与反序列化,序列化 (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;
            }
        }
    View Code

        后台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 > 0).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));
            }
        }
    }
    View Code

      前台一个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("数据加载失败,请刷新页面重试!");
            }
        });
    }
    View Code

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

       

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

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

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

  • 相关阅读:
    java enum
    how to build a runable jar
    ZF报错解决方法·
    Apache配置本地测试多网站域名与虚拟主机
    PHP实现MVC开发: 一个简单的MVC
    收藏PHP常用函数
    数据库密码忘记…………找回方法
    php读取excel文件reader.php excel操作类使用
    积累的常用linux命令
    JS控制浏览器大小
  • 原文地址:https://www.cnblogs.com/forcheng/p/5594973.html
Copyright © 2011-2022 走看看