標籤:
原文地址:http://wo13145219.iteye.com/blog/2022667
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.IO;using System.Text;using System.Runtime.Serialization.Json;using System.Collections.Generic;using System.Reflection;using System.Web.Script.Serialization;namespace AjaxTest{ public partial class Json : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Response.Write(getJsonInfo()); //string strReg = "\\\\"; //strReg = strReg.Replace("\\\\", "\\"); ////Response.Write(strReg); //方法一 Response.Write(disJsonInfo(getObjectByJson(getJsonInfo()))); //方法二 Response.Write(JsonInfo.getInfo()); } /// <summary> /// 擷取將實體類轉換為json資料(目的是為了更快在網頁上傳遞資料) /// </summary> /// <returns></returns> public string getJsonInfo() { UserInfo userInfo = new UserInfo(); //userInfo.strNameInfo = "張三"; //userInfo.intAgeInfo = 23; //userInfo.intTelInfo = 66666; //userInfo.strAddrInfo = "北京市"; //userInfo.strPasswordInfo = "yhx.123"; userInfo.strName = "張三"; userInfo.intAge = 23; userInfo.strPsd = "yhx.123"; userInfo.intTel = 2324; userInfo.strAddr = "北京市"; //將對象序列化json DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo)); //建立儲存區為記憶體流 System.IO.MemoryStream ms = new MemoryStream(); //將json字串寫入記憶體流中 serializer.WriteObject(ms, userInfo); System.IO.StreamReader reader = new StreamReader(ms); ms.Position = 0; string strRes = reader.ReadToEnd(); reader.Close(); ms.Close(); return strRes; } /// <summary> /// 將json資料轉換成實體類 /// </summary> /// <returns></returns> private static List<UserInfo> getObjectByJson(string jsonString) { // 執行個體化DataContractJsonSerializer對象,需要待序列化的物件類型 DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<UserInfo>)); //把Json傳入記憶體流中儲存 jsonString = "[" + jsonString + "]"; MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); // 使用ReadObject方法還原序列化成對象 object ob = serializer.ReadObject(stream); List<UserInfo> ls = (List<UserInfo>)ob; return ls; } /// <summary> /// 在頁面上顯示轉換為實體類資料 /// </summary> private string disJsonInfo(List<UserInfo> us) { string strItem = ""; foreach(var item in us ) { strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>"; } return strItem; } } /// <summary> /// 使用者實體類 /// </summary> public class UserInfo { //使用者名稱 public string strName { get; set; } //年齡 public int intAge { get; set; } //密碼 public string strPsd { get; set; } //電話號碼 public int intTel { get; set; } //地址 public string strAddr { get; set; } } /// <summary> /// 將json資料轉換成實體類(方法二) /// </summary> public static class JsonInfo { /// <summary> /// 擷取將實體類轉換為json資料(目的是為了更快在網頁上傳遞資料) /// </summary> /// <returns></returns> public static string getJsonInfo() { UserInfo userInfo = new UserInfo(); userInfo.strName = "張三"; userInfo.intAge = 23; userInfo.strPsd = "yhx.123"; userInfo.intTel = 2324; userInfo.strAddr = "北京市"; //將對象序列化json DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo)); //建立儲存區為記憶體流 System.IO.MemoryStream ms = new MemoryStream(); //將json字串寫入記憶體流中 serializer.WriteObject(ms, userInfo); System.IO.StreamReader reader = new StreamReader(ms); ms.Position = 0; string strRes = reader.ReadToEnd(); reader.Close(); ms.Close(); return strRes; } /// <summary> /// /// </summary> /// <returns></returns> public static string getInfo() { string JsonStr = "["+getJsonInfo()+"]"; List<UserInfo> products; products = JsonInfo.JSONStringToList<UserInfo>(JsonStr); string strItem = ""; foreach (var item in products) { strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>"; } return strItem; } /// <summary> /// 返回List集合對象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="JsonStr"></param> /// <returns></returns> public static List<T> JSONStringToList<T>(this string JsonStr) { JavaScriptSerializer Serializer = new JavaScriptSerializer(); List<T> objs = Serializer.Deserialize<List<T>>(JsonStr); return objs; } /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="json"></param> /// <returns></returns> public static T Deserialize<T>(string json) { T obj = Activator.CreateInstance<T>(); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); return (T)serializer.ReadObject(ms); } } }}
[轉][C#]c# 將JSON轉化為list實體類,將list實體類轉化為JSON字串