asp.net 使用json

來源:互聯網
上載者:User

本篇將簡單的介紹一個在.NET中實現JSON的API,然後使用該API做個C/S ASP.NET的小練習。

Json.NET的簡單介紹

首先介紹一個為方便在.NET中使用JSON的API,Json.NET。它方便我們讀取從瀏覽器流向伺服器的JSON對象,也方便在響應流中寫入JSON對象。這裡下載:Json.NET。

Json.NET只提供了伺服器端的方法,主要有實現JSON文本與XML互相轉換的類,有自訂讀寫JSON的JsonReader類和JsonWriter類,還有一個非自訂讀寫JSON的JavaScriptSerializer類。

ASP.NET AJAX中,伺服器端由JavaScriptSerializer類的幾個方法來用於實現序列化和還原序列化能力。在Json.NET中,伺服器端的序列化和還原序列化能力則主要由JavaScriptConvert類的幾個方法提供。本篇的例子只使用了JavaScriptConvert。

  1. JavaScriptConvert

    • Json.NET中,這個類用於序列化和還原序列化JavaScript對象。
    • 這個類有兩個方法:
      1. SerializeObject(object value, params JsonConverter[] converters),序列化,它有個重載方法SerializeObject(object value)
      2. DeserializeObject(string value, Type type),還原序列化,它有個重載方法DeserializeObject(string value)

在用戶端,Json.NET未提供支援。如果需要則可以結合使用上一篇“What is JSON:初識JSON”提到的json.js來處理用戶端的系列化與還原序列化。

下面我們嘗試用這個API在ASP.NET中實現用JSON互動資料。

使用Json.NET在C/S中互動JSON資料的簡單例子
  1. 先建立一個ASP.NET 網站。

  2. 將下載到的Binary檔案夾中的Newtonsoft.Json.dll和Newtonsoft.Json.XML放入網站的bin檔案,當然要先建立bin檔案夾。然後對dll添加引用。

  3. 切 換到設計模式,從標準工具箱向頁面上添加三個Label,Text分別為EmployeeID、EmployeeName、EmployeeInfo;三 個Textbox,ID分別為txtID、txtName、txtInfo;然後添加一個Button,ID為btnToJSONString,Text 為Invoke ToJSONString;然後添加一個Textbox,ID為txtJSON,Textmode為MultiLine,rows設為5;接著再分別添加 一個Button和Textbox,ID為btnToObject、txtStrEmployee,Button的Text為Invoke ToStrEmployee。
  4. 添加一個WebService項目。 
    • 編寫一個Employee類,然後兩個WebMethod,接著在項目中對該Web服務添加引用。代碼如下:

      using System;
      using System.Web;
      using System.Collections;
      using System.Web.Services;
      using System.Web.Services.Protocols;
      using Newtonsoft.Json;

      class Employee
      {
          private string[] employeeInfo;
          
          public int EmployeeID;
          public string EmployeeName;
          public string[] EmployeeInfo
          {
              get { return this.employeeInfo; }
              set { this.employeeInfo = value;}
          }
      }

      /**//// <summary>
      /// WebService 的摘要說明
      /// </summary>
      [WebService(Namespace = "http://tempuri.org/")]
      [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
      public class WebService : System.Web.Services.WebService {

          public WebService () {

              //如果使用設計的組件,請取消注釋以下行 
              //InitializeComponent(); 
          }

          [WebMethod]
          public string ToJSONString(int employeeID, string employeeName, string[] employeeInfo) 
          {
              Employee employee = new Employee();
              employee.EmployeeID = employeeID;
              employee.EmployeeName = employeeName;
              employee.EmployeeInfo = employeeInfo;

              return JavaScriptConvert.SerializeObject(employee);
          }

          [WebMethod]
          public string ToStrEmployee(string strJSON)
          {
              Employee decerializedEmployee = (Employee)JavaScriptConvert.DeserializeObject(strJSON, typeof(Employee));
              return "ID: " + decerializedEmployee.EmployeeID + " "
                  + "Name: " + decerializedEmployee.EmployeeName + " "
                  + "Info: " + decerializedEmployee.EmployeeInfo.GetValue(0).ToString() 
          }   
      }

                          成員的屬性類型分別為數字、字串和數組。

5、對兩個Button編寫事件代碼

    

 

    protected void btnToJSONString_Click(object sender, EventArgs e)
    {
        MyServ.WebService MyWebServ = new MyServ.WebService();
        string employeeJSON = MyWebServ.ToJSONString(Int32.Parse(txtID.Text), txtName.Text, txtInfo.Text.Split(','));
        txtJSON.Text = employeeJSON;
    }
    protected void btnToStrEmployee_Click(object sender, EventArgs e)
    {
        MyServ.WebService MyWevServ = new MyServ.WebService();
        string strEmployee = MyWevServ.ToStrEmployee(txtJSON.Text);
        txtStrEmployee.Text = strEmployee;
    }

 

 

6、按Ctrl + F5運行;在EmployeeID、EmployeeName、EmployeeInfo中輸入123、Hunts.C及一些個人資訊(用逗號隔開);點擊Invoke ToJSONString,經伺服器端序列化後,結果在txtJSON文字框中;然後點擊Invoke ToStrEmployee,此時txtJSON文字框中的JSON文本傳輸給伺服器端,伺服器端讀取該JSON並還原序列化成對象,而後在 txtStrEmployee中寫入Employee的成員值。 

                  \

只需要知道json裡頭除了name(名稱)就是value(值),值有好幾種格式,如果是數字就不用加引號,如果加了引號就是字串,如果用[]包裹就是數組,如果出現{}就說明是嵌套的json。諸如此類。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.