您的位置:首页 > Web前端 > JavaScript

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

2014-02-27 11:05 204 查看
   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
示例代码:

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
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"  />
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.}

http://www.cnblogs.com/yjkai/archive/2010/11/10/json1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: