日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#解析JSON字符串总结

發布時間:2025/3/16 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#解析JSON字符串总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C#解析JSON字符串總結

JSON文件讀取到內存中就是字符串,.NET操作JSON就是生成與解析JSON字符串。

操作JSON通常有以下幾種方式:

1. 原始方式:按照JSON字符串自己來解析。

?

2. 通用方式【★★★★★】:這種方式是使用開源的類庫Newtonsoft.Json(下載地址http://json.codeplex.com/)。下載后添加dll引用就能用。

首先添加引用:using Newtonsoft.Json;

新增:本地dll下載:Newtonsoft.Json.rar?? 引用:using Newtonsoft.Json;

?

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 = 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 = 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();

?

3. 內置方式:使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空間下的JavaScriptSerializer類進行對象的序列化與反序列化,很直接。

Project p1 = new Project() { Input = "stone", Output = "gold" }; JavaScriptSerializer serializer = new JavaScriptSerializer(); string jsonStr = serializer.Serialize(p1); //序列化:對象=>JSON字符串 Response.Write(jsonStr);Project p2 = serializer.Deserialize<Project>(jsonStr); //反序列化:JSON字符串=>對象 Response.Write(p1.Input + "=>" + p2.Output);

  注意:如果使用的是VS2010,則要求當前的工程的 Target Framework要改成.Net Framework 4,不能使用Client Profile。當然這個System.Web.Extensions.dll主要是Web使用的,直接在Console工程中用感覺有點浪費資源。
  此外,從最后一句也可以看到,序列化與反序列化是深拷貝的一種典型的實現方式

?

備注:

json格式字符串轉換為實體類,大括號{}表示對象,[]數組表示列表。

轉載于:https://www.cnblogs.com/zoujinhua/p/10884634.html

總結

以上是生活随笔為你收集整理的C#解析JSON字符串总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。