摘要:[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)
參考資料
以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)