C#解析Json数据(利用Newtonsoft.Json库)
今天想做個快遞查詢軟件玩玩,手頭有個快遞查詢api,它返回的數據是Json,百度了一下如何用C#解析Json數據,終于慢慢理解。所以現在寫篇日志記錄一下。
本文章用到的類庫:http://pan.baidu.com/s/1hqEOfli
上面的Json數據中,如果只想取data數據中的time字段和context字段的內容。可以這樣寫:
說明我們解析成功了。
本文章用到的類庫: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數據
- 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 廣西省桂林市七星區育才路分部公司 已簽收