摘要:[ASP.NET] 在 Server 接收 Client 回傳的 JSON 格式資料
前言
在之前有介紹過如何使用 C# 用泛型處理常式來傳送 JSON 格式資料到 Clinet 端顯示,但是沒提到 Server 接收 Client 的 JSON 方法,首先來複習一下之前的使用方法
    // 序列化Object
    public void objectSerialization(HttpContext context)
    {
        ProductData product = new ProductData() { productNo = "201209150001", productName = "搞怪多多", productAmt = "399" };
        DataContractJsonSerializer json = new DataContractJsonSerializer(product.GetType());
        json.WriteObject(context.Response.OutputStream, product);
    }
    public class ProductData
    {
        public string productNo { get; set; }
        public string productName { get; set; }
        public string productAmt { get; set; }
    }
透過 DataContractJsonSerializer 類別,我們可以序列化及反序列化類別,使用 new DataContractJsonSerializer(product.GetType()) 取得將要序列化的物件型別,再使用 json.WriteObject(context.Response.OutputStream, product) 將要指定序列化的物件出入資料流即可,上面的方式即為 Server 傳送 JSON 格式資料到 Clinet 的方式,接下來說明一下 Server 接收 Clinet JSON 格式資料的方式,請參考以下範例。
範例
    public void jsonFormatObject(HttpContext context)
    {
        string jData = context.Request.Params["jData"] as string;
        if (jData != null)
        {
            ProductData product = jsonDeserialization(jData);
        }
    }
    // 反序列化JSON
    public static T jsonDeserialization<T>(string jsonString)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(ms);
        return obj;
    }
    public class ProductData
    {
        public string productNo { get; set; }
        public string productName { get; set; }
        public string productAmt { get; set; }
    }
 
	  在這裡使用了 泛型方法 jsonDeserialization(string)
參考資料
以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)
