C#實現(xiàn)json格式數(shù)據(jù)解析功能的方法詳解
本文實例講述了C#實現(xiàn)json格式數(shù)據(jù)解析功能的方法。分享給大家供大家參考,具體如下:
來寫寫json的解析吧
首先添加web引用
System.Web.Extensions
路徑
c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Web.Extensions.dll
接下來就是兩個函數(shù)了,一個是根據(jù)key來獲取,一個是根據(jù)index來獲取
public static bool GetValue(string json, string key, out string value)
{
//解析失敗的默認返回值
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)
{
//解析失敗的默認返回值
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;
}
}
再上一段測試效果圖吧
測試文本(用的是 http://tools.jb51.net/tools/json/json_editor.htm 這個在線解析json的工具里提供的一段json格式,稍作修改 )
樹形結構如圖

測試代碼(新建winform項目,添加引用,然后copy上方兩個靜態(tài)方法,窗體放一個textbox,雙擊窗體,哦對,json文本我把放在了桌面名為1.txt的文件,因為很多引號,懶得替換成轉義的了)
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, "中國食譜", out value);
textBox1.Text = value;
}
運行結果

最后提一下,如果value是int類型的(比如說"id":1),那么取id返回的文本是 1 ,
而如果value是字符串類型(比如說"id":"1"),那么取id返回的文本是 "1",兩邊會有雙引號,這里可以在方法里面稍作判斷
如下
public static bool GetValue(string json, string key, out string value)
{
//解析失敗的默認返回值
value = "";
JavaScriptSerializer serializer = new JavaScriptSerializer();
try
{
Dictionary<string, object> obj_json = serializer.DeserializeObject(json) as Dictionary<string, object>;
if (obj_json.ContainsKey(key))
{
//加上這個類型判斷即可
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;
}
}
PS:關于json操作,這里再為大家推薦幾款比較實用的json在線工具供大家參考使用:
在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.jb51.net/code/json
JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat
在線XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson
json代碼在線格式化/美化/壓縮/編輯/轉換工具:
http://tools.jb51.net/code/jsoncodeformat
在線json壓縮/轉義工具:
http://tools.jb51.net/code/json_yasuo_trans
更多關于C#相關內容還可查看本站專題:《C#字符串操作技巧總結》、《C#常見控件用法教程》、《WinForm控件用法總結》、《C#程序設計之線程使用技巧總結》、《C#中XML文件操作技巧匯總》、《C#數(shù)據(jù)結構與算法教程》、《C#數(shù)組操作技巧總結》及《C#面向對象程序設計入門教程》
希望本文所述對大家C#程序設計有所幫助。
相關文章
WinForm實現(xiàn)最小化到系統(tǒng)托盤方法實例詳解
這篇文章主要介紹了WinForm實現(xiàn)最小化到系統(tǒng)托盤方法,實例分析了C#中實現(xiàn)WinForm最小化到系統(tǒng)托盤所需的相關控件與使用技巧,需要的朋友可以參考下2015-05-05
C#使用StopWatch獲取程序毫秒級執(zhí)行時間的方法
這篇文章主要介紹了C#使用StopWatch獲取程序毫秒級執(zhí)行時間的方法,涉及C#操作時間的相關技巧,需要的朋友可以參考下2015-04-04

