ASP.NETはSystemを使用する.Web.Script.Serialization解析JSON

13062 ワード

JSON(JavaScript Object Notation)は、軽量レベルのデータ交換フォーマットです.読みやすく、書きやすい.同時に機械の解析と生成も容易である.JavaScript Programming Language,Standard ECMA-2623 rd Edition-December 1999のサブセットに基づいています.JSONは完全に言語から独立したテキスト形式を採用しているが、C言語の家族のような習慣も使われている.これらの特性はJSONを理想的なデータ交換言語にした.JSONは、1、「名前/値」ペアの集合(A collection of name/value pairs)の2つの構造で構築されています.異なる言語では、オブジェクト(object)、レコード(record)、構造(struct)、辞書(dictionary)、ハッシュテーブル(hash table)、キーリスト(keyed list)、または関連配列(associative array)として理解されます.例:「UserID」:11,「Name」:「Frog」};2、値はシーケンステーブル(An ordered list of values)があります.ほとんどの言語では、配列(array)として理解されています.例:var Users=[{"userID":"1","Name":"Frog","friends":["Jack","Zack","Justin"]},{"userID":"2","Name":"Zack","friend":["Jack","Zack","Zack","Zack","Justin"]]]},{"userID":"3","Name":"Justin","Justin","friend":["Jack","Zack","Zack","Justin","Justin"","Justin"","Name":","Justin","Justin","Justin","n"]}これらは一般的なデータ構造である.実際、現代のコンピュータ言語の大部分は何らかの形でサポートされています.これにより、同じ構造に基づくプログラミング言語間でデータフォーマットが区切られる.JSONには、オブジェクトが無秩序な「名前/値」ペアのセットであるという形式があります.オブジェクトは「{」(左かっこ)で始まり、「}」(右かっこ)で終わります.各名前の後に":"(コロン);「,」(カンマ)で区切られた「名前/値」ペア.配列は値(value)の秩序化された集合です.配列は[](左中括弧)で始まり、[](右中括弧)で終わります.値の間に「,」(カンマ)区切り値(value)を使用すると、二重引用符で囲まれた文字列(string)、数値(number)、true、false、null、オブジェクト(object)、または配列(array)になります.これらの構造はネストできます.文字列(string)は、二重引用符で囲まれた任意の数のUnicode文字の集合であり、反斜線変換を用いる.1つの文字(character)は、個別の文字列(character string)です.NETでJavaScriptSerializerクラスを使用してJSONオブジェクトのサンプルコードを操作します.
  • JavaScriptSerializer json = new JavaScriptSerializer();

  • //JSON文字列の逆シーケンス化オブジェクト
  • User user = json.Deserialize(jsonString);

  • //シーケンス化対象はJSON文字列
  • 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(回転)