C#解析Json數據(利用Newtonsoft.Json庫)


轉載http://blog.csdn.net/e_one/article/details/51730217

今天想做個快遞查詢軟件玩玩,手頭有個快遞查詢api,它返回的數據是Json,百度了一下如何用C#解析Json數據,終於慢慢理解。所以現在寫篇日志記錄一下。
本文章用到的類庫:http://pan.baidu.com/s/1hqEOfli

當然你也可以到官網去下載。地址:http://www.newtonsoft.com/json

 

使用api返回類似以下數據,如果看不懂,可以先去看Json數據是如何組織的。

{  
"status":"3",  
"message":"",  
"errCode":"0",  
"data":[  
    {"time":"2015-05-28 20:26","context":"福建省泉州市晉江市公司 已收件"},  
    {"time":"2015-05-28 21:26","context":"福建省泉州市晉江市公司 已打包"},  
    {"time":"2015-05-30 08:44","context":"廣西省桂林市公司 已發出"},  
    {"time":"2015-05-30 14:50","context":"廣西省桂林市七星區育才路分部公司 派件中"},  
    {"time":"2015-05-31 18:11","context":"廣西省桂林市七星區育才路分部公司 已簽收"}  
],  
"html":"",  
"mailNo":"500151529838",  
"expTextName":"圓通快遞",  
"expSpellName":"yuantong",  
"update":"1433655616",  
"cache":"0",  
"ord":"ASC",  
"tel":"95554"  
}  

我們下載好類庫后,添加類庫到引用

using Newtonsoft.Json; 

然后寫兩個類實體,List對應Json的數組,類的成員名要和上面的Json數據一致。

public class JsonParser  
{  
public int status;  
public int errCode;  
public string message;  
public string html;  
public int mailTo;  
public string tel;  
public string expTextName;  
public List data;  
}  
public class Data {  
public string time;  
public string context;  
}   

上面的Json數據中,如果只想取data數據中的time字段和context字段的內容。可以這樣寫:

//反序列化Json數據  
JsonParser jp = (JsonParser)JsonConvert.DeserializeObject(result);//result為上面的Json數據  
List list = jp.data;  
list = jp.data;  
StringBuilder sb = new StringBuilder();  
foreach(Data data in list){  
sb.Append(data.time+"\t");  
sb.Append(data.context + "\r\n\r\n");  
}   

上面的代碼,如果打印sb.ToString()的結果就會打印出以下內容:

2015-05-28 20:26 福建省泉州市晉江市公司 已收件  
  
2015-05-28 21:26 福建省泉州市晉江市公司 已打包  
  
2015-05-30 08:44 廣西省桂林市公司 已發出  
  
2015-05-30 14:50 廣西省桂林市七星區育才路分部公司 派件中  
  
2015-05-31 18:11 廣西省桂林市七星區育才路分部公司 已簽收  

說明我們解析成功了。
最后送上快遞查詢的源代碼
鏈接:http://pan.baidu.com/s/1mg9Wlkc密碼:q8ed


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM