大多数情况下,我们不会再Javascript中直接创建JSON字符串。而是,创建一些Javascript对象,这些对象和服务器上的.net对象对应。因此,可以在服务器上创建.net实体类,然后串行化成JSON格式,随后在浏览器中反串行化为Javascript对象。

Album.asmx

<%@ WebService Language="C#" Class="AlbumProxy" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
using System.Net;
using System.Xml.Serialization;
using System.Web.Script.Serialization;
public class Album
{
private string _artist = String.Empty;
private string _title = String.Empty;
private int _releaseYear;
private string[] _tracks = new string[];
private DateTime _dateTime = DateTime.Now;
private string _personalInfo = "do not show this"; [ScriptIgnore]
public string PersonalInfo
{
get
{
return _personalInfo;
}
set
{
_personalInfo = value;
}
} public Album() { } public string Artist
{
get
{
return _artist;
}
set
{
_artist = value;
}
} public string Title
{
get
{
return _title;
}
set
{
_title = value;
}
} public int ReleaseYear
{
get
{
return _releaseYear;
}
set
{
_releaseYear = value;
}
} public string[] Tracks
{
get
{
return _tracks;
}
set
{
_tracks = value;
}
}
} [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class AlbumProxy : System.Web.Services.WebService
{
private Album _album; public AlbumProxy()
{
_album = new Album();
_album.Artist = "Phish";
_album.Title = "A Picture of Nectar";
_album.ReleaseYear = ;
_album.Tracks.SetValue("Llama", );
_album.Tracks.SetValue("Eliza", );
_album.Tracks.SetValue("Cavern", );
_album.Tracks.SetValue("Poor Heart", );
_album.Tracks.SetValue("Stash", );
_album.Tracks.SetValue("Manteca", );
_album.Tracks.SetValue("Guelah Papyrus", );
_album.Tracks.SetValue("Magilla", );
_album.Tracks.SetValue("The Landlady", );
_album.Tracks.SetValue("Glide", );
_album.Tracks.SetValue("Tweezer", );
_album.Tracks.SetValue("The Mango Song", );
_album.Tracks.SetValue("Chalk Dust Torture", );
_album.Tracks.SetValue("Faht", );
_album.Tracks.SetValue("Catapult", );
_album.Tracks.SetValue("Tweezer Reprise", );
} [WebMethod]
[XmlInclude(typeof(Album))]
public object GetAlbum() {
return _album;
} [WebMethod]
[XmlInclude(typeof(Album))]
public object GetAlbumJSON()
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(_album);
}
}

ScriptProxy.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ScriptProxy.aspx.cs" Inherits="Chap9Project.ScriptProxy" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function pageLoad() {
AlbumProxy.GetAlbumJSON(completionJSON);
AlbumProxy.GetAlbum(completionObject);
} function completionJSON(result) {
alert(result);
var album = Sys.Serialization.JavaScriptSerializer.deserialize(result);
$get('placeholder').innerHTML = album.Artist;
} function completionObject(album) {
alert(album);
$get('placeholder2').innerHTML = album.ReleaseYear;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Album.asmx" />
</Services>
</asp:ScriptManager>
<div id="placeholder"></div>
<br />
<div id="placeholder2"></div>
</div>
</form>
</body>
</html>

JSON串行化的更多相关文章

  1. Hadoop基础-Protocol Buffers串行化与反串行化

    Hadoop基础-Protocol Buffers串行化与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过很多种序列化文件格式,比如python中的pickl ...

  2. Hadoop基础-Apache Avro串行化的与反串行化

    Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...

  3. 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】

    一.移动.复制页的逻辑实现 移动.复制页的功能是在设计调查页面的时候需要实现的功能.规则是如果在同一个调查中的话就是移动,如果是在不同调查中的就是复制. 无论是移动还是复制,都需要注意一个问题,那就是 ...

  4. PHP面向对象04_串行化

    oop04复习 2014-9-3 10:48:45 要点: --1.克隆对象 --2.__toString( ) --3. __call( ) --4.自动加载类 --5.对象串行化 1.克隆对象以及 ...

  5. 【PHP面向对象(OOP)编程入门教程】22.把对象串行化serialize()方法,__sleep()方法,__wakeup()方法

    有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化), 就像我们现在想把一辆汽车通过轮船运到美国去,因为 ...

  6. VC++ chap13 文档与串行化

    Lesson 13 文档与串行化 13.1使用CArchive类对文件进行读写操作 //让对象数据持久性的过程称之为串行化,或者序列化 void CGraphicView::OnFileWrite() ...

  7. Java 对象的串行化(Serialization)

    1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(pe ...

  8. 【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)

    问题描述: 客户端js连续发起两个异步http请求,请求地址相同,但参数不同:POST http://*.*.*.*/*****/webservice/RESTFulWebService/RESTFu ...

  9. Oracle 6 - 锁和闩 - transaction的可串行化

    本文主要内容 1.transaction的可串行化 2.数据库并发带来的问题, dirty read, Nonrepeatable reads, Phantoms幻读 3.隔离级别和2中的问题 4. ...

随机推荐

  1. //获取url中"?"符后的字串

    //获取url中"?"符后的字串 function getParamByUrl(url) {    var theRequest = new Object();    var in ...

  2. MFC 透明内存DC

    在MFC中绘制比较复杂图形,通常采用双缓冲技术来绘图,的确可以大大加快绘制速度和减少闪烁,但是有些情况也不尽然. 我最近遇到了一个问题,采用的也是双缓冲来加快绘图,但是绘制效果还是不尽人意.A对象里大 ...

  3. php sso 单点登录的实现 代码示例

    先说一下这样做的好处吧,先来三个屌丝域名: www.openpoor.com myspace.openpoor.com passport.openpoor.com 大家都知道,虽然他们都是一个域名但主 ...

  4. nagios总结

    主要功能 网络服务监控(SMTP.POP3.HTTP.NNTP.ICMP.SNMP.FTP.SSH) 主机资源监控(CPU load.disk usage.system logs),也包括Window ...

  5. 1--OC -- HelloWorld

      一.点击Xcode,选择“Create a new Xcode project” 二.左边选择“OS X Application”,右边选择“Command Line Tool”,Next 三.输 ...

  6. Mysql主从备份、主主备份

    简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做 ...

  7. PAT (Advanced Level) 1101. Quick Sort (25)

    树状数组+离散化 #include<cstdio> #include<cstring> #include<cmath> #include<map> #i ...

  8. input text设置字体

    控件里设置: style="font-family:Arial" html里设置 <font face="Arial">

  9. 我也谈 AngularJS 怎么使用Directive, Service, Controller

    原文地址:http://sunqianxiang.github.io/angularjs-zen-yao-shi-yong-directiveservicecontroller.html 其转自大漠穷 ...

  10. OpenGL学习-------点、直线、多边形

    上一课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点太小,难以看清楚:直线也太细,不舒服:或者想画虚线,但不知道方法只能用许多短直线,甚至用点组合而成. ...