zoukankan      html  css  js  c++  java
  • ASP.NET 使用 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对象
    示例代码:

    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

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JsonWeb._Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
        <script src="http://www.json.org/json.js" type="text/javascript"></script>
        <script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
             // "名称/值"对的集合
             var User={"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]}
                     alert(User.Name);alert(User.friends[0]);
            
             // 值的有序列表
             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"]}
                         ]
             alert(Users[2].Name);alert(Users[2].friends.length);
             alert(escape());
            
             // 转换JSON字符到Object
             var JsonString = '{"userID":"2","Name":"Froog","friends":["Jack","Zack","Justin"]}';   
             var User2 = eval('(' + JsonString + ')');
             alert(User2.Name);alert(User2.friends[0]);
            
             //引用 json.js 实现JSON字符与Object相互转换。
             var obj = JsonString.parseJSON();   
             alert(obj.toJSONString());  
            
              //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 );
                                      }
             });
         //   requestHeaders: {Accept: 'application/json'} /**/,
                          }
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <input type="button" value="AJAX" onclick="getResult()" />
        </div>
        </form>
    </body>
    </html>

    Default.aspx.cs

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Web.Script.Serialization;
    namespace JsonWeb
    {
        public partial class _Default : System.Web.UI.Page
         {
            protected void Page_Load(object sender, EventArgs e)
             {
                if (Request.QueryString["Json"] != null)
                 {
                    // AJAX 异步调用处理程序
                    string UserInfo = Request.Form["UserInfo"] ?? string.Empty;
                     JavaScriptSerializer json = new JavaScriptSerializer();
                     Product product = new Product() { Name = "Computer " };
                    if (!string.IsNullOrEmpty(UserInfo))
                     {
                        // 反序列化
                         User user = json.Deserialize<User>(UserInfo);
                         product.User = user.Name;
                     }
                    else
                     {
                         product.User = "Unknow";
                     }
                    // 序列化
                    string jsonString = json.Serialize(product);
                    // 输出异步处理结果
                     Response.ContentType = "application/json";
                     Response.Write(jsonString);
                     Response.End();
                 }
             }
         }
         [Serializable]
        public class Product
         {
            public string Name;
            public string User;
         }
        public class User
         {
            public string Name { get; set; }
         }
    }

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

     
  • 相关阅读:
    簡單的內容移動展示
    PHPExcel讀取excel數據
    javascript touch事件
    vue学习笔记之初识vue——模板声明与绑定
    vue学习笔记初识vue——使用HTML模板
    vue学习笔记初识vue——创建vue示例
    vue学习笔记之初识vue——渐进式前端框架
    vue整屏滑动组件
    CSS如何居中div??
    vue+百度地图API
  • 原文地址:https://www.cnblogs.com/wangfuyou/p/5177559.html
Copyright © 2011-2022 走看看