参考C# 使用 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对象
示例代码:


[c#]  view plain  copy
  1. 1.JavaScriptSerializer json = new JavaScriptSerializer();  
  2. 2.// 反序列化JSON字符串到对象  
  3. 3.User user = json.Deserialize<User>(jsonString);  
  4. 4.// 序列化对象为JSON字符串  
  5. 5.string jsonString = json.Serialize(user);  
  6. JavaScriptSerializer 成员信息:http://msdn.microsoft.com/zh-cn/library /system.web.script.serialization.javascriptserializer_members.aspx  

AJAX 中使用JSON

示例代码:

[c#]  view plain  copy
  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

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


Default.aspx.cs

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

猜你喜欢

转载自blog.csdn.net/qmdweb/article/details/80851046
今日推荐