這篇文章主要介紹了C#如何實現json格式數據解析功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
具體如下:
來寫寫json的解析吧
首先添加web引用
System.Web.Extensions
路徑
c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Web.Extensions.dll
接下來就是兩個函數了,一個是根據key來獲取,一個是根據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格式,稍作修改 )
復制代碼 代碼如下:
{"a":[{"中國食譜":["上海醉蟹","北京鍋燒雞","川式涼拌豇豆","清真醬牛肉"],"更多":{"中式":["南","北",{"地方":["小吃","大餐"]},"更多選擇"]}},"其它"],"b":"123","c":32}
樹形結構如圖

測試代碼(新建winform項目,添加引用,然后copy上方兩個靜態方法,窗體放一個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;
}
}C#是一個簡單、通用、面向對象的編程語言,它由微軟Microsoft開發,繼承了C和C++強大功能,并且去掉了一些它們的復雜特性,C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程從而成為.NET開發的首選語言,但它不適用于編寫時間急迫或性能非常高的代碼,因為C#缺乏性能極高的應用程序所需要的關鍵功能。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C#如何實現json格式數據解析功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。