国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#實(shí)現(xiàn)json格式數(shù)據(jù)解析功能的方法詳解

2019-10-29 21:08:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了C#實(shí)現(xiàn)json格式數(shù)據(jù)解析功能的方法。分享給大家供大家參考,具體如下:

來(lái)寫(xiě)寫(xiě)json的解析吧

首先添加web引用

System.Web.Extensions

路徑

c:/Program Files (x86)/Reference Assemblies/Microsoft/Framework/v3.5/System.Web.Extensions.dll

接下來(lái)就是兩個(gè)函數(shù)了,一個(gè)是根據(jù)key來(lái)獲取,一個(gè)是根據(jù)index來(lái)獲取

public static bool GetValue(string json, string key, out string value){  //解析失敗的默認(rèn)返回值  value = "";  JavaScriptSerializer serializer = new JavaScriptSerializer();  try  {    Dictionary<string, object> obj_json = serializer.DeserializeObject(json) as Dictionary<string, object>;    if (obj_json.ContainsKey(key))    {      value = serializer.Serialize(obj_json[key]);      return true;    }    return false;  }  catch (Exception)  {    return false;  }}public static bool GetValue(string json, int index, out string value){  //解析失敗的默認(rèn)返回值  value = "";  JavaScriptSerializer serializer = new JavaScriptSerializer();  try  {    object[] obj_json = serializer.DeserializeObject(json) as object[];    if (obj_json.Length > index)    {      value = serializer.Serialize(obj_json[index]);      return true;    }    return false;  }  catch (Exception)  {    return false;  }}

再上一段測(cè)試效果圖吧

測(cè)試文本  這個(gè)在線解析json的工具里提供的一段json格式,稍作修改 )

復(fù)制代碼 代碼如下:
{"a":[{"中國(guó)食譜":["上海醉蟹","北京鍋燒雞","川式?jīng)霭梏?quot;,"清真醬牛肉"],"更多":{"中式":["南","北",{"地方":["小吃","大餐"]},"更多選擇"]}},"其它"],"b":"123","c":32}

 

樹(shù)形結(jié)構(gòu)如圖

C#,json,解析

測(cè)試代碼(新建winform項(xiàng)目,添加引用,然后copy上方兩個(gè)靜態(tài)方法,窗體放一個(gè)textbox,雙擊窗體,哦對(duì),json文本我把放在了桌面名為1.txt的文件,因?yàn)楹芏嘁?hào),懶得替換成轉(zhuǎn)義的了)

private void Form1_Load(object sender, EventArgs e){  string json = System.IO.File.ReadAllText(@"C:/Users/taoguo/Desktop/1.txt", Encoding.Default);  string value;  GetValue(json, "a", out value);  GetValue(value, 0, out value);  GetValue(value, "中國(guó)食譜", out value);  textBox1.Text = value;}

運(yùn)行結(jié)果

C#,json,解析

最后提一下,如果value是int類型的(比如說(shuō)"id":1),那么取id返回的文本是 1 ,

而如果value是字符串類型(比如說(shuō)"id":"1"),那么取id返回的文本是 "1",兩邊會(huì)有雙引號(hào),這里可以在方法里面稍作判斷

如下

public static bool GetValue(string json, string key, out string value){  //解析失敗的默認(rèn)返回值  value = "";  JavaScriptSerializer serializer = new JavaScriptSerializer();  try  {    Dictionary<string, object> obj_json = serializer.DeserializeObject(json) as Dictionary<string, object>;    if (obj_json.ContainsKey(key))    {      //加上這個(gè)類型判斷即可      if (obj_json[key] is System.String)      {        value = obj_json[key].ToString();        return true;      }      value = serializer.Serialize(obj_json[key]);      return true;    }    return false;  }  catch (Exception)  {    return false;  }}

希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到c#教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐津县| 日土县| 汉中市| 德昌县| 伊金霍洛旗| 玉屏| 庆云县| 施秉县| 开原市| 衡南县| 鄂尔多斯市| 玉林市| 即墨市| 昌黎县| 方城县| 台前县| 镇远县| 南丰县| 嵊州市| 怀来县| 贵德县| 株洲市| 会东县| 阜宁县| 西畴县| 横峰县| 天祝| 监利县| 佛坪县| 宽甸| 阳朔县| 南和县| 云和县| 张家界市| 河北省| 额敏县| 大关县| 多伦县| 肃北| 岱山县| 长顺县|