.net 中 Json資料轉實體類,實體類轉Json
阿新 • • 發佈:2019-02-08
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
- 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
- //建立儲存區為記憶體流
- 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;
- }