1. 程式人生 > >.net 中 Json資料轉實體類,實體類轉Json

.net 中 Json資料轉實體類,實體類轉Json

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.         /// <summary>  
  28.         /// 將json資料轉換成實體類     
  29.         /// </summary>  
  30.         /// <returns></returns>  
  31.         private static List<UserInfo> getObjectByJson(string jsonString)  
  32.         {  
  33.             // 例項化DataContractJsonSerializer物件,需要待序列化的物件型別  
  34.             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<UserInfo>));  
  35.             //把Json傳入記憶體流中儲存  
  36.             jsonString = "[" + jsonString + "]";  
  37.             MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));  
  38.             // 使用ReadObject方法反序列化成物件  
  39.             object ob = serializer.ReadObject(stream);  
  40.             List<UserInfo> ls = (List<UserInfo>)ob;  
  41.             return ls;  
  42.         }  
  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.         }