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对象
示例代码:

  1. JavaScriptSerializer json = new JavaScriptSerializer();
  2. // 反序列化JSON字符串到对象
  3. User user = json.Deserialize<User>(jsonString);
  4. // 序列化对象为JSON字符串
  5. string jsonString = json.Serialize(user);

JavaScriptSerializer 成员信息:http://msdn.microsoft.com/zh-cn/library /system.web.script.serialization.javascriptserializer_members.aspx

AJAX 中使用JSON

示例代码:

  1. function getResult()
  2. {
  3.   $.ajax({
  4.   type: "POST",
  5.   url: "?Json=true",
  6.   data:"UserInfo="+obj.toJSONString(),
  7.   success: function(msg){var obj = msg.parseJSON();
  8.     alert( "Name: " + obj.Name +",User:"+obj.User );
  9.   }
  10. });

完整示例代码

Default.aspx

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JsonWeb._Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5. <title>Untitled Page</title>
  6. <script src="http://www.json.org/json.js" type="text/javascript"></script>
  7. <script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
  8. <script type="text/javascript">
  9. // "名称/值"对的集合
  10. var User={"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]}
  11. alert(User.Name);alert(User.friends[0]);
  12.  
  13. // 值的有序列表
  14. var Users=[{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
  15. {"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
  16. {"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}
  17. ]
  18. alert(Users[2].Name);alert(Users[2].friends.length);
  19. alert(escape());
  20.  
  21. // 转换JSON字符到Object
  22. var JsonString = '{"userID":"2","Name":"Froog","friends":["Jack","Zack","Justin"]}';
  23. var User2 = eval('(' + JsonString + ')');
  24. alert(User2.Name);alert(User2.friends[0]);
  25.  
  26. //引用 json.js 实现JSON字符与Object相互转换。
  27. var obj = JsonString.parseJSON();
  28. alert(obj.toJSONString());
  29.  
  30. //AJAX 中使用JSON
  31. function getResult()
  32. {
  33. $.ajax({
  34. type: "POST",
  35. url: "?Json=true",
  36. data:"UserInfo="+obj.toJSONString(),
  37. success: function(msg){
  38. var obj = msg.parseJSON();
  39. alert( "Name: " + obj.Name +",User:"+obj.User );
  40. }
  41. });
  42. // requestHeaders: {Accept: 'application/json'} /**/,
  43. }
  44. </script>
  45. </head>
  46. <body>
  47. <form id="form1" runat="server">
  48. <div>
  49. <input type="button" value="AJAX" onclick="getResult()" />
  50. </div>
  51. </form>
  52. </body>
  53. </html>

Default.aspx.cs

  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Web.Security;
  8. using System.Web.UI;
  9. using System.Web.UI.HtmlControls;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.WebControls.WebParts;
  12. using System.Xml.Linq;
  13. using System.Web.Script.Serialization;
  14. namespace JsonWeb
  15. {
  16. public partial class _Default : System.Web.UI.Page
  17. {
  18. protected void Page_Load(object sender, EventArgs e)
  19. {
  20. if (Request.QueryString["Json"] != null)
  21. {
  22. // AJAX 异步调用处理程序
  23. string UserInfo = Request.Form["UserInfo"] ?? string.Empty;
  24. JavaScriptSerializer json = new JavaScriptSerializer();
  25. Product product = new Product() { Name = "Computer " };
  26. if (!string.IsNullOrEmpty(UserInfo))
  27. {
  28. // 反序列化
  29. User user = json.Deserialize<User>(UserInfo);
  30. product.User = user.Name;
  31. }
  32. else
  33. {
  34. product.User = "Unknow";
  35. }
  36. // 序列化
  37. string jsonString = json.Serialize(product);
  38. // 输出异步处理结果
  39. Response.ContentType = "application/json";
  40. Response.Write(jsonString);
  41. Response.End();
  42. }
  43. }
  44. }
  45. [Serializable]
  46. public class Product
  47. {
  48. public string Name;
  49. public string User;
  50. }
  51. public class User
  52. {
  53. public string Name { get; set; }
  54. }
  55. }

转载:征服自己,征服世界       参考C# 使用 System.Web.Script.Serialization 解析 JSON (转)

 

ASP.NET 使用 System.Web.Script.Serialization 解析 JSON (转)的更多相关文章

  1. 参考C# 使用 System.Web.Script.Serialization 解析 JSON

    参考C# 使用 System.Web.Script.Serialization 解析 JSON 使用json需要引用到System.Web.Script.Serialization.习惯在解决方案右键 ...

  2. C# 使用 System.Web.Script.Serialization 解析 JSON

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  3. csharp: using using System.Web.Script.Serialization read json

    using System; using System.Data; using System.Configuration; using System.Collections; using System. ...

  4. 在.net2.0下使用System.Web.Script.Serialization;

    最近,在弄json字符串转为对象.需要添加这个引用System.Web.Script.Serialization;因为版本必须是dotnet2.0的原因,发现很多解决方案不适合自己.故使用这种解决办法 ...

  5. using System.Web.Script.Serialization

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  6. System.Web.Script.Serialization引用找不到的问题

    之前在项目中要使用JavascriptSerializer这个类,需要引入System.Web.Script.Serialization命名空间,但是在添加引用中找不到这个命名空间,后来才得知Syst ...

  7. System.Web.Script.Serialization的引用

    解决方案: 找到C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 ==>System.Web.Extensions.d ...

  8. 无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login”

    今天碰上了一个很傻的问题,起码我认为是这样. 项目中首页名是:Login.aspx,编译.运行都没有出现问题. 于是打包发布网站,各项内容都配置好后,问题出现了.一运行首页面就出现下面这个错误: 编译 ...

  9. asp.net MVC3 “System.Web.Mvc.ModelClientValidationRule”问题

    错误提示: Error 1 The type 'System.Web.Mvc.ModelClientValidationRule' exists in both 'c:\Program Files ( ...

随机推荐

  1. 【M10】在构造方法内阻止资源泄漏

    1.类中没有指针,如果对象构造过程中出现异常,C++保证已经构造好的那一部分自动销毁.注意:这里不是调用析构方法,而是编译器在你的构造方法中插入了一些代码,保证对已经构造好的对象析构. 2.类中有指针 ...

  2. Editor Scripting学习笔记之Menu Item

    主要用到: MenuItem属性 MenuCommand参数 可能用到: EditorApplication类 Selection类 GameObjectUtility类 FileUtil类 Undo ...

  3. ActivityGroup+LinearLayout实现iphone风格的底部tab菜单

    public class ActsGroup extends ActivityGroup {       private LinearLayout bodyView;     private Line ...

  4. 获取div相对文档的位置

    获取div相对文档的位置,两个方法 经测试 document.getElementById("btn").getBoundingClientRect() 在IE6下有2像素的bug ...

  5. IOS开发之路三(XML解析之KissXML的使用)

    最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...

  6. 如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections)

    关键词: -Wl,--gc-sections   -ffunction-sections  链接  elf   库 有时我们会遇到这种情况,可执行程序需要链接一些静态库,但是静态库中的函数并没有全部使 ...

  7. 请谨慎使用 @weakify 和 @strongify

    来源:酷酷的哀殿 链接:http://www.jianshu.com/p/d8035216b257 前言 相信大部分见过 @weakify 和 @strongify 的开发者都会喜欢上这两个宏.但是很 ...

  8. jquery . fancybox()

    1.父页面 function chooseTopic(btn) {//选择议题 $.fancybox({ type : 'iframe', href : '', fitToView : false, ...

  9. javascript实现经纬度与地址的互转

    最近项目中会用到将地址转换为经纬的.从出来,还一直未遇到过这类问题,下来自己提前学习了,将自己所学的记录在案. 在网上找了很多资料,最后确定了,百度的API,有实现相关的接口(API地址).使用API ...

  10. Selenium html之于ul标志代码分析与使用

    分析:https://github.com/页面Li <div class="header header-logged-out"> <div class=&quo ...