JSON串行化
大多数情况下,我们不会再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串行化的更多相关文章
- Hadoop基础-Protocol Buffers串行化与反串行化
Hadoop基础-Protocol Buffers串行化与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过很多种序列化文件格式,比如python中的pickl ...
- Hadoop基础-Apache Avro串行化的与反串行化
Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...
- 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】
一.移动.复制页的逻辑实现 移动.复制页的功能是在设计调查页面的时候需要实现的功能.规则是如果在同一个调查中的话就是移动,如果是在不同调查中的就是复制. 无论是移动还是复制,都需要注意一个问题,那就是 ...
- PHP面向对象04_串行化
oop04复习 2014-9-3 10:48:45 要点: --1.克隆对象 --2.__toString( ) --3. __call( ) --4.自动加载类 --5.对象串行化 1.克隆对象以及 ...
- 【PHP面向对象(OOP)编程入门教程】22.把对象串行化serialize()方法,__sleep()方法,__wakeup()方法
有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化), 就像我们现在想把一辆汽车通过轮船运到美国去,因为 ...
- VC++ chap13 文档与串行化
Lesson 13 文档与串行化 13.1使用CArchive类对文件进行读写操作 //让对象数据持久性的过程称之为串行化,或者序列化 void CGraphicView::OnFileWrite() ...
- Java 对象的串行化(Serialization)
1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(pe ...
- 【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)
问题描述: 客户端js连续发起两个异步http请求,请求地址相同,但参数不同:POST http://*.*.*.*/*****/webservice/RESTFulWebService/RESTFu ...
- Oracle 6 - 锁和闩 - transaction的可串行化
本文主要内容 1.transaction的可串行化 2.数据库并发带来的问题, dirty read, Nonrepeatable reads, Phantoms幻读 3.隔离级别和2中的问题 4. ...
随机推荐
- idea编译器中maven项目获取路径的方法
资源文件放在哪里? 上 图中的 resources 目录叫资源目录 (main下,与java如果没有请自行创建), 在项目编译后文件会被放到红色的 classes 目录下, 注意如果你的 resour ...
- UIView回调方法(可以在添加子视图等,做一些额外操作)
didAddSubview didMoveToSuperview willMoveToSuperview didMoveToWindow willMoveToWindow willRemoveSubv ...
- vps安装wordpress遇到的问题(lnmp)
1.要执行请求的操作,WordPress 需要访问您网页服务器的权限. 请输入您的 FTP 登录XXXX完美解决方法 因为在wordpress中新上传的插件的权限都是www用户的,而不是root或其他 ...
- VideoView的视频播放
//-------------onCreate方法中----------------------- VideoView video_view = (VideoView) findViewById(R. ...
- 视频录制SurfaceView
package com.bw.videorecorder; import java.io.File;import java.io.IOException; import android.media.M ...
- IDL 计算TVDI
介绍请看:http://blog.sina.com.cn/s/blog_764b1e9d0100wdrr.html 源码: IDL 源码PRO TVDI,NDVI,LST,NBINS,RES RES ...
- 【转载】最全的面试题目整理(HTML+CSS部分)
转载自 知乎 @西点王子 https://www.zhihu.com/people/F211/answers 1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? (Q1) 浏览器: ...
- ping命令使用技巧(一次Ping多个地址)
打开windows 命令行 窗口, 在命令行输入以下命令: for /l %i in (1,1,255) do ping -n 1 -w 60 192.168.0.%i | find " ...
- json optString getString
optString 和 getString 区别. optString 当接收到的为空时候 不会报错
- wind7系统修改host
http://jingyan.baidu.com/article/e5c39bf56564a539d7603312.html 由于软件注册的原因,我需要更改hosts文件来防止服务器验证!那么在我们修 ...