ASP.NET 使用 System.Web.Script.Serialization 解析 JSON (转)
2016-02-02 14:58
741 查看
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
示例代码:
完整示例代码
Default.aspx
Default.aspx.cs
转载:征服自己,征服世界 参考C# 使用 System.Web.Script.Serialization 解析 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 系列:单元测试之ConfigurationManager
- 树莓派:VNC远程登录Raspbian图形界面(tightvncserver)
- ASP.NET MVC中使用异步控制器
- 利用程序将.jrxml导出为.jasper文件并用PDF显示(2)
- ajax success 没进入后台 返回login.aspx的html
- ASP.NET MVC学习系列(二)-WebAPI请求
- ASPxGridView在绑定字段为空时,td边框不出现
- 使用MiniProfiler调试Asp.net Mvc性能
- ASP.NET Core 1.0 Configuration 配置管理
- ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(7)
- Asp.Net 网站一键部署技术(上)
- 开发ASP.NET MVC设置统一的命名空间
- ASP.NET 4.5.256 has not been registered on the Web server
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
- 【B/S】Asp.Net控件总结
- 【B/S】Asp.Net宏观认识
- Asp.net MVC3使用Reporting Services生成PDF解决Web在线打印
- ASP.NET中JSON的序列化和反序列化
- metasploit——How To Set Up A Penetration Testing Lab
- 怎样安装和配置Windows 7系统的IIS 7和ASP