C#中将JSon数据转换成实体类,将实体类转换成Json

  1. using System;  
  2. using System.Collections;  
  3. using System.Configuration;  
  4. using System.Data;  
  5. using System.Linq;  
  6. using System.Web;  
  7. using System.Web.Security;  
  8. using System.Web.UI;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.Web.UI.WebControls;  
  11. using System.Web.UI.WebControls.WebParts;  
  12. using System.Xml.Linq;  
  13. using System.IO;  
  14. using System.Text;  
  15. using System.Runtime.Serialization.Json;  
  16. using System.Collections.Generic;  
  17. using System.Reflection;  
  18. using System.Web.Script.Serialization;  
  19.   
  20. namespace AjaxTest  
  21. {  
  22.     public partial class Json : System.Web.UI.Page  
  23.     {  
  24.         protected void Page_Load(object sender, EventArgs e)  
  25.         {  
  26.             //Response.Write(getJsonInfo());  
  27.             //string strReg = "\\\\";  
  28.             //strReg = strReg.Replace("\\\\", "\\");  
  29.             Response.Write(strReg);  
  30.             //方法一  
  31.             Response.Write(disJsonInfo(getObjectByJson(getJsonInfo())));      //方法二  
  32.             Response.Write(JsonInfo.getInfo());  
  33.   
  34.         }  
  35.   
  36.         /// <summary>  
  37.         /// 获取将实体类转换为json数据(目的是为了更快在网页上传递数据)  
  38.         /// </summary>  
  39.         /// <returns></returns>  
  40.         public string getJsonInfo()  
  41.         {  
  42.             UserInfo userInfo = new UserInfo();  
  43.             //userInfo.strNameInfo = "张三";  
  44.             //userInfo.intAgeInfo = 23;  
  45.             //userInfo.intTelInfo = 66666;  
  46.             //userInfo.strAddrInfo = "北京市";  
  47.             //userInfo.strPasswordInfo = "yhx.123";  
  48.             userInfo.strName = "张三";  
  49.             userInfo.intAge = 23;  
  50.             userInfo.strPsd = "yhx.123";  
  51.             userInfo.intTel = 2324;  
  52.             userInfo.strAddr = "北京市";  
  53.             //将对象序列化json  
  54.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));  
  55.             //创建存储区为内存流  
  56.             System.IO.MemoryStream ms = new MemoryStream();  
  57.             //将json字符串写入内存流中  
  58.             serializer.WriteObject(ms, userInfo);  
  59.             System.IO.StreamReader reader = new StreamReader(ms);  
  60.             ms.Position = 0;  
  61.             string strRes = reader.ReadToEnd();  
  62.             reader.Close();  
  63.             ms.Close();  
  64.             return strRes;  
  65.         }  
  66.   
  67.         /// <summary>  
  68.         /// 将json数据转换成实体类     
  69.         /// </summary>  
  70.         /// <returns></returns>  
  71.         private static List<UserInfo> getObjectByJson(string jsonString)  
  72.         {  
  73.             // 实例化DataContractJsonSerializer对象,需要待序列化的对象类型  
  74.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<UserInfo>));  
  75.             //把Json传入内存流中保存  
  76.             jsonString = "[" + jsonString + "]";  
  77.             MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));  
  78.             // 使用ReadObject方法反序列化成对象  
  79.             object ob = serializer.ReadObject(stream);  
  80.             List<UserInfo> ls = (List<UserInfo>)ob;  
  81.             return ls;  
  82.         }  
  83.   
  84.         /// <summary>  
  85.         /// 在页面上显示转换为实体类数据  
  86.         /// </summary>  
  87.         private string  disJsonInfo(List<UserInfo> us)  
  88.         {  
  89.             string strItem = "";  
  90.             foreach(var item in us )  
  91.             {  
  92.                 strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";  
  93.             }  
  94.             return strItem;  
  95.         }  
  96.     }  
  97.   
  98.   
  99.   
  100.   
  101.     /// <summary>  
  102.     /// 用户实体类  
  103.     /// </summary>  
  104.     public class UserInfo  
  105.     {  
  106.         //用户名  
  107.         public string strName { getset; }  
  108.         //年龄  
  109.         public int intAge { getset; }  
  110.         //密码  
  111.         public string strPsd { getset; }  
  112.         //电话号码   
  113.         public int intTel { getset; }  
  114.         //地址  
  115.         public string strAddr { getset; }  
  116.         构造函数进行初始化  
  117.         //public UserInfo()  
  118.         //{  
  119.         //    strName = "";  
  120.         //    intAge = 0;  
  121.         //    strPsd = "";  
  122.         //    intTel = 0;  
  123.         //    strAddr = "";  
  124.         //}  
  125.   
  126.         / <summary>  
  127.         / 用户名  
  128.         / </summary>  
  129.         //public string strNameInfo  
  130.         //{  
  131.         //    set { strName = value; }  
  132.         //    get { return strName; }  
  133.         //}  
  134.   
  135.         / <summary>  
  136.         / 年龄  
  137.         / </summary>  
  138.         //public int intAgeInfo  
  139.         //{  
  140.         //    set { intAge = value; }  
  141.         //    get { return intAge; }  
  142.         //}  
  143.   
  144.         / <summary>  
  145.         / 密码  
  146.         / </summary>  
  147.         //public string strPasswordInfo  
  148.         //{  
  149.         //    set { strPsd = value; }  
  150.         //    get { return strPsd; }  
  151.         //}  
  152.   
  153.         / <summary>  
  154.         / 电话号码  
  155.         / </summary>  
  156.         //public int intTelInfo  
  157.         //{  
  158.         //    set { intTel = value; }  
  159.         //    get { return intTel; }  
  160.         //}  
  161.   
  162.         / <summary>  
  163.         / 地址  
  164.         / </summary>  
  165.         //public string strAddrInfo  
  166.         //{  
  167.         //    set { strAddr = value; }  
  168.         //    get { return strAddr; }  
  169.         //}  
  170.     }  
  171.   
  172.   
  173.     /// <summary>  
  174.     /// 将json数据转换成实体类(方法二)  
  175.     /// </summary>  
  176.     public static class JsonInfo  
  177.     {  
  178.         /// <summary>  
  179.         /// 获取将实体类转换为json数据(目的是为了更快在网页上传递数据)  
  180.         /// </summary>  
  181.         /// <returns></returns>  
  182.         public static string getJsonInfo()  
  183.         {  
  184.             UserInfo userInfo = new UserInfo();  
  185.             userInfo.strName = "张三";  
  186.             userInfo.intAge = 23;  
  187.             userInfo.strPsd = "yhx.123";  
  188.             userInfo.intTel = 2324;  
  189.             userInfo.strAddr = "北京市";  
  190.             //将对象序列化json  
  191.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));  
  192.             //创建存储区为内存流  
  193.             System.IO.MemoryStream ms = new MemoryStream();  
  194.             //将json字符串写入内存流中  
  195.             serializer.WriteObject(ms, userInfo);  
  196.             System.IO.StreamReader reader = new StreamReader(ms);  
  197.             ms.Position = 0;  
  198.             string strRes = reader.ReadToEnd();  
  199.             reader.Close();  
  200.             ms.Close();  
  201.             return strRes;  
  202.         }  
  203.   
  204.         /// <summary>  
  205.         ///   
  206.         /// </summary>  
  207.         /// <returns></returns>  
  208.         public static string getInfo()  
  209.         {  
  210.             string JsonStr = "["+getJsonInfo()+"]";  
  211.             List<UserInfo> products;  
  212.   
  213.             products = JsonInfo.JSONStringToList<UserInfo>(JsonStr);  
  214.   
  215.             string strItem = "";  
  216.             foreach (var item in products)  
  217.             {  
  218.                 strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";  
  219.             }  
  220.             return strItem;  
  221.         }  
  222.   
  223.   
  224.         /// <summary>  
  225.         /// 返回List集合对象  
  226.         /// </summary>  
  227.         /// <typeparam name="T"></typeparam>  
  228.         /// <param name="JsonStr"></param>  
  229.         /// <returns></returns>  
  230.         public static List<T> JSONStringToList<T>(this string JsonStr)  
  231.         {  
  232.   
  233.             JavaScriptSerializer Serializer = new JavaScriptSerializer();  
  234.   
  235.             List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);  
  236.             return objs;  
  237.   
  238.         }  
  239.   
  240.   
  241.         /// <summary>  
  242.         ///   
  243.         /// </summary>  
  244.         /// <typeparam name="T"></typeparam>  
  245.         /// <param name="json"></param>  
  246.         /// <returns></returns>  
  247.         public static T Deserialize<T>(string json)  
  248.         {  
  249.   
  250.             T obj = Activator.CreateInstance<T>();  
  251.   
  252.             using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))  
  253.             {  
  254.   
  255.                 DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());  
  256.   
  257.                 return (T)serializer.ReadObject(ms);  
  258.   
  259.             }  
  260.   
  261.         }  
  262.     }  
  263. }  
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值