.net 中 Json数据转实体类,实体类转Json

来源:互联网 发布:淘宝助理无法同步店铺 编辑:程序博客网 时间:2024/06/05 19:45

1.获取一个页面的json值,转换为实体类

public static void GetPurchaseMatPriceLogList()

        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("www.json.com");
            request.Timeout = 5000;
            request.Method = "GET";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Console.WriteLine("内容类型:" + response.ContentType);
            Console.WriteLine("内容长度:" + response.ContentLength);
            Console.WriteLine("服务器名:" + response.Server);
            Console.WriteLine("资源的URI:" + response.ResponseUri);
            Console.WriteLine("HTTP协议版本:" + response.ProtocolVersion);
            Console.WriteLine("相应状态:" + response.StatusCode);
            Console.WriteLine("相应方法:" + response.Method);
            //头信息
            for (int i = 0; i < response.Headers.Count; ++i)
            {
                Console.WriteLine("\nHeader Name:{0},----------Value:{1}", response.Headers.Keys[i], response.Headers[i]);
            }


            StreamReader sr = new StreamReader(response.GetResponseStream());
            string jsonstr = sr.ReadToEnd();  //这是获取到的Json字符串
            //开始转换
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<PurchaseMatPriceLogList>));
            //jsonstr = "[" + jsonstr + "]";
            MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonstr));
            object ob = serializer.ReadObject(stream);
            List<PurchaseMatPriceLogList> ls = (List<PurchaseMatPriceLogList>)ob;
            if (ls == null)
            {
                throw new ArgumentNullException("未获取到最新的数据");
            }


            //判断每一条数据是不是当天,如果是就更新,不是就添加
            foreach (PurchaseMatPriceLogList pl in ls)
            {
                //暂时只处理板材
                if (pl.metel_type_title == "不锈钢板" || pl.metel_type_title == "碳钢板材")
                {
                    PurchaseMatPriceLogApp.AddIUDPurchaseMatPriceLog(pl);
                }
            }

        }


2.将实体类中的值转换为json

  1. public string getJsonInfo()  
  2.         {  
  3.             UserInfo userInfo = new UserInfo();  
  4.             //userInfo.strNameInfo = "张三";  
  5.             //userInfo.intAgeInfo = 23;  
  6.             //userInfo.intTelInfo = 66666;  
  7.             //userInfo.strAddrInfo = "北京市";  
  8.             //userInfo.strPasswordInfo = "yhx.123";  
  9.             userInfo.strName = "张三";  
  10.             userInfo.intAge = 23;  
  11.             userInfo.strPsd = "yhx.123";  
  12.             userInfo.intTel = 2324;  
  13.             userInfo.strAddr = "北京市";  
  14.             //将对象序列化json  
  15.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));  
  16.             //创建存储区为内存流  
  17.             System.IO.MemoryStream ms = new MemoryStream();  
  18.             //将json字符串写入内存流中  
  19.             serializer.WriteObject(ms, userInfo);  
  20.             System.IO.StreamReader reader = new StreamReader(ms);  
  21.             ms.Position = 0;  
  22.             string strRes = reader.ReadToEnd();  
  23.             reader.Close();  
  24.             ms.Close();  
  25.             return strRes;  
  26.         }  
  27.   
  28.         /// <summary>  
  29.         /// 将json数据转换成实体类     
  30.         /// </summary>  
  31.         /// <returns></returns>  
  32.         private static List<UserInfo> getObjectByJson(string jsonString)  
  33.         {  
  34.             // 实例化DataContractJsonSerializer对象,需要待序列化的对象类型  
  35.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<UserInfo>));  
  36.             //把Json传入内存流中保存  
  37.             jsonString = "[" + jsonString + "]";  
  38.             MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));  
  39.             // 使用ReadObject方法反序列化成对象  
  40.             object ob = serializer.ReadObject(stream);  
  41.             List<UserInfo> ls = (List<UserInfo>)ob;  
  42.             return ls;  
  43.         }  
  1. /// <summary>  
  2.         /// 在页面上显示转换为实体类数据  
  3.         /// </summary>  
  4.         private string  disJsonInfo(List<UserInfo> us)  
  5.         {  
  6.             string strItem = "";  
  7.             foreach(var item in us )  
  8.             {  
  9.                 strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";  
  10.             }  
  11.             return strItem;  
  12.         }  


1 0
原创粉丝点击