JSON & JavaScriptSerializer

    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(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){
  8.                                 var obj = msg.parseJSON();
  9.                                 alert( "Name: " + obj.Name +",User:"+obj.User );
  10.                                  }
  11.         });

完整示例代码


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


更多参考

     http://www.json.org/json-zh.html
    http://www.json.org/js.html
    http://msdn.microsoft.com/zh-cn/library/system.web.script.serialization.javascriptserializer_members.aspx
    http://www.codeplex.com/Json



你可能感兴趣的:(.NET,&,C#,JS,&,HTML,&,Css)