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

时间:2022-11-07 18:57:51

   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字符到Object22.         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 JsonWeb15.{16.    public partial class _Default : System.Web.UI.Page17.     {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.                else33.                 {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 Product47.     {48.        public string Name;49.        public string User;50.     }51.    public class User52.     {53.        public string Name { get; set; }54.     }55.}



http://www.cnblogs.com/yjkai/archive/2010/11/10/json1.html