JSON檔案讀取到記憶體中就是字串,.NET操作JSON就是生成與決議JSON字串,
操作JSON通常有以下幾種方式:
1. 原始方式:按照JSON字串自己來決議,
2. 通用方式【★★★★★】:這種方式是使用開源的類別庫Newtonsoft.Json,使用NuGet進行參考

1.Json字串普通格式決議(常用)
string jsonText = "{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}"; JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText); string zone = jo["zone"].ToString(); string zone_en = jo["zone_en"].ToString();
其他寫法:
int retCode = -1;//回傳碼,0表示成功,其他表示失敗 string returnMessage = string.Empty;//回傳訊息,對回傳碼的描述 string jsonStr = "{\"RetCode\":3,\"ReturnMessage\":\"測驗訊息\"}"; JavaScriptObject jsonObj = JavaScriptConvert.DeserializeObject<JavaScriptObject>(jsonStr); if (jsonObj != null) { if (jsonObj.ContainsKey("RetCode") && jsonObj["RetCode"] != null) { int.TryParse(jsonObj["RetCode"].ToString(), out retCode); } if (jsonObj.ContainsKey("ReturnMessage") && jsonObj["ReturnMessage"] != null) { returnMessage = jsonObj["ReturnMessage"].ToString(); } }
決議Josn串列資料:
public static JArray GetData2JArray(string url, string key) { string jsonData = https://www.cnblogs.com/Liyuting/archive/2020/12/18/HttpHelper.HttpGet(url, "", "gb2312"); JObject obj = JObject.Parse(jsonData); return (JArray)obj[key]; }
以上Json的回傳的資料:
{"Pictures":
[
{"PictureSrc":"http://i.ssimg.cn/ssupload/2016/10/17/707f464645f44b4cb9882b75d23ed8f9.png","PictureLink":"","PictureAlt":"通光線纜 36.50%","PictureTitle":"實盤賽冠軍直播室","PictureTitleLink":"132","PictureSummary":"荷塘月色直播室是由野馬和荷塘月色夫妻倆共同直播的直播室,野馬以短線股為主,荷塘月色以中線股為主,擅于抓漲停板和翻倍牛股,","OrderTime":"2016-10-17 13:16:04"},
{"PictureSrc":"http://i.ssimg.cn/ssupload/2016/10/17/4c38b0a2604e49beaf1e4f7885e6a1a4.png","PictureLink":"","PictureAlt":"天際股份 6.38%","PictureTitle":"證券之星最強王牌播主","PictureTitleLink":"1716","PictureSummary":"深入股海數年,擁有十余年的實戰經驗,2014年證券之星播主年度冠軍,各大一線網站著名博客,多次接受電視臺專訪,","OrderTime":"2016-10-17 13:12:34"}
]
}
決議成自定義物體類串列:
#region 獲取手編串列 /// <summary> /// 獲取手編串列 /// </summary> /// <returns></returns> public static List<Pictures> GetHandWriteList() { List<Pictures> list = new List<Pictures>(); var data = https://www.cnblogs.com/Liyuting/archive/2020/12/18/Common.LiveCastUserManageAPI.GetData2JArray(CmsApiSite, "Pictures"); if (data != null && data.Count > 0) { foreach (var item in data) { Pictures p = new Pictures(); if (!string.IsNullOrEmpty(item["PictureSrc"].ToString())) { p.PictureSrc = item["PictureSrc"].ToString(); } list.Add(p); } } return list; } #endregion
Pictures物體類的定義:
public class Pictures { /// <summary> /// http://i.ssimg.cn/ssupload/2016/10/17/e6500633d4cb4a918c8f45e2c71ab8f6.jpg /// </summary> public string PictureSrc { get; set; } /// <summary> /// /// </summary> public string PictureLink { get; set; } /// <summary> /// 中色股份 53% /// </summary> public string PictureAlt { get; set; } /// <summary> /// 四季度翻倍牛股在哪里? /// </summary> public string PictureTitle { get; set; } /// <summary> /// meihaoxiangwang /// </summary> public string PictureTitleLink { get; set; } /// <summary> /// 荷塘月色直播室是由野馬和荷塘月色夫妻倆共同直播的直播室,野馬以短線股為主, 荷塘月色以中線股為主,擅于抓漲停板和翻倍牛股, /// </summary> public string PictureSummary { get; set; } /// <summary> /// 股票名稱 /// </summary> public string StockName { get; set; } /// <summary> /// 股票收益率 /// </summary> public string Rate { get; set; } /// <summary> /// 昵稱 /// </summary> public string NickName { get; set; } /// <summary> /// 頭像 /// </summary> public string HeadImg { get; set; } /// <summary> /// 直播室名稱 /// </summary> public string CastRoomName { get; set; } }
JSON生成物體類工具:點擊>>
參考:序列化Json-Newtonsoft.Json
決議JsonArrayList
轉換json格式為C#類
2.Json字串嵌套格式決議
string jsonText = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}"; JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText); string zone = jo["beijing"]["zone"].ToString(); string zone_en = jo["beijing"]["zone_en"].ToString();
3.Json字串陣列格式決議
string jsonArrayText = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]"; //"[{'a':'a1','b':'b1'}]即使只有一個元素,也需要加上[] string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]"; //上面寫法和此寫法效果一樣 JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);//jsonArrayText必須是帶[]陣列格式字串 string str = jArray[0]["a"].ToString();
/// <summary> /// 將JSON轉字串(包括陣列)轉為T /// </summary> /// <typeparam name="T"></typeparam> /// <param name="json"></param> /// <returns></returns> public static T JsonConvertObject<T>(string json) { return JsonConvert.DeserializeObject<T>(json); }
備注:
json格式字串轉換為物體類,大括號{}表示物件,[]陣串列示串列,
原文鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/236844.html
標籤:.NET技术
