本文實(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格式,稍作修改 )
樹(shù)形結(jié)構(gòu)如圖
測(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é)果
最后提一下,如果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ì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注