ASP.NET 使用 System.Web.Script.Serialization 解析 JSON (转)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表 (hash table),有键列表(keyed list),或者关联数组 (associative array)。
示例:{"UserID":11, "Name":"Froog"};
2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
如:
示例:var Users=[{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
{"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
{"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交号)分隔。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是 值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔值(value)可以是双引号括 起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
NET中通过JavaScriptSerializer类操作JSON对象
示例代码:
- JavaScriptSerializer json = new JavaScriptSerializer();
- // 反序列化JSON字符串到对象
- User user = json.Deserialize<User>(jsonString);
- // 序列化对象为JSON字符串
- string jsonString = json.Serialize(user);
JavaScriptSerializer 成员信息:http://msdn.microsoft.com/zh-cn/library /system.web.script.serialization.javascriptserializer_members.aspx
AJAX 中使用JSON
示例代码:
function getResult()
{
$.ajax({
type: "POST",
url: "?Json=true",
data:"UserInfo="+obj.toJSONString(),
success: function(msg){var obj = msg.parseJSON();
alert( "Name: " + obj.Name +",User:"+obj.User );
}
});
完整示例代码
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JsonWeb._Default" %>
<!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>Untitled Page</title>
<script src="http://www.json.org/json.js" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
// "名称/值"对的集合
var User={"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]}
alert(User.Name);alert(User.friends[0]); // 值的有序列表
var Users=[{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
{"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
{"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}
]
alert(Users[2].Name);alert(Users[2].friends.length);
alert(escape()); // 转换JSON字符到Object
var JsonString = '{"userID":"2","Name":"Froog","friends":["Jack","Zack","Justin"]}';
var User2 = eval('(' + JsonString + ')');
alert(User2.Name);alert(User2.friends[0]); //引用 json.js 实现JSON字符与Object相互转换。
var obj = JsonString.parseJSON();
alert(obj.toJSONString()); //AJAX 中使用JSON
function getResult()
{
$.ajax({
type: "POST",
url: "?Json=true",
data:"UserInfo="+obj.toJSONString(),
success: function(msg){
var obj = msg.parseJSON();
alert( "Name: " + obj.Name +",User:"+obj.User );
}
});
// requestHeaders: {Accept: 'application/json'} /**/,
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" value="AJAX" onclick="getResult()" />
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.Script.Serialization;
namespace JsonWeb
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["Json"] != null)
{
// AJAX 异步调用处理程序
string UserInfo = Request.Form["UserInfo"] ?? string.Empty;
JavaScriptSerializer json = new JavaScriptSerializer();
Product product = new Product() { Name = "Computer " };
if (!string.IsNullOrEmpty(UserInfo))
{
// 反序列化
User user = json.Deserialize<User>(UserInfo);
product.User = user.Name;
}
else
{
product.User = "Unknow";
}
// 序列化
string jsonString = json.Serialize(product);
// 输出异步处理结果
Response.ContentType = "application/json";
Response.Write(jsonString);
Response.End();
}
}
}
[Serializable]
public class Product
{
public string Name;
public string User;
}
public class User
{
public string Name { get; set; }
}
}
转载:征服自己,征服世界 参考C# 使用 System.Web.Script.Serialization 解析 JSON (转)
ASP.NET 使用 System.Web.Script.Serialization 解析 JSON (转)的更多相关文章
- 参考C# 使用 System.Web.Script.Serialization 解析 JSON
参考C# 使用 System.Web.Script.Serialization 解析 JSON 使用json需要引用到System.Web.Script.Serialization.习惯在解决方案右键 ...
- C# 使用 System.Web.Script.Serialization 解析 JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- csharp: using using System.Web.Script.Serialization read json
using System; using System.Data; using System.Configuration; using System.Collections; using System. ...
- 在.net2.0下使用System.Web.Script.Serialization;
最近,在弄json字符串转为对象.需要添加这个引用System.Web.Script.Serialization;因为版本必须是dotnet2.0的原因,发现很多解决方案不适合自己.故使用这种解决办法 ...
- using System.Web.Script.Serialization
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- System.Web.Script.Serialization引用找不到的问题
之前在项目中要使用JavascriptSerializer这个类,需要引入System.Web.Script.Serialization命名空间,但是在添加引用中找不到这个命名空间,后来才得知Syst ...
- System.Web.Script.Serialization的引用
解决方案: 找到C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 ==>System.Web.Extensions.d ...
- 无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login”
今天碰上了一个很傻的问题,起码我认为是这样. 项目中首页名是:Login.aspx,编译.运行都没有出现问题. 于是打包发布网站,各项内容都配置好后,问题出现了.一运行首页面就出现下面这个错误: 编译 ...
- asp.net MVC3 “System.Web.Mvc.ModelClientValidationRule”问题
错误提示: Error 1 The type 'System.Web.Mvc.ModelClientValidationRule' exists in both 'c:\Program Files ( ...
随机推荐
- 【M5】对定制的“类型转换函数”保持警觉
1.隐式类型转换有两种情况:单个形参构造方法和隐式类型转换操作符.注意:隐式类型转换不是把A类型的对象a,转化为B类型的对象b,而是使用a对象构造出一个b对象,a对象并没有变化. 2.单个形参构造方法 ...
- JavaScript中伪协议 javascript:研究
将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的 ...
- hdu 4497 GCD and LCM 数学
GCD and LCM Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4 ...
- 【JavaScript】jQuery Ajax 实例 全解析
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对 ...
- iOS NSData
NSData全部API学习. 学习NSData,在网上找资料竟然都是拷贝的纯代码,没人去解释.在这种网上没资料的情况下,整理这个API文件好难,好艰辛.在这贡献给大家了,么么哒~示例程序用红色标注. ...
- C# Socket基础(一)之启动异步服务监听
本文主要是以代码为主..NET技术交流群 199281001 .欢迎加入. //通知一个或多个正在等待的线程已发生事件. ManualResetEvent manager = new ManualRe ...
- C和C++函数互相调用
Call C++ function from C & Call C function from C++ (C和C++函数互相调用) By williamxue on Jun 12, 2007 ...
- [golang学习] 在idea中code & debug
[已废弃]不需要看 idea 虽然审美倒退了n年. 不过功能还是相当好用的. idea 的go插件堪称最好的go ide. 1. 语法高亮支持 2. 智能提示 3. 跳转定义(反跳转回来) 4. 集成 ...
- 1.6.8 Content Streams
1. Content Streams 当RequestHandlers请求基于URL路径来访问时,SolrQueryRequest包含了请求的参数,同样包含了ContentStreams(包含了大容量 ...
- [Windows] Visual Studio 2010 快捷键大全
Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL ...