方式一
第一步:使用前,需下载:Newtonsoft.Json.dll
没有的,请到我百度云盘下载
链接:https://pan.baidu.com/s/1JBkee4qhtW7XOyYFiGOL2Q
提取码:b5uq
第二步:引入命名空间:using Newtonsoft.Json;
第三步:封装一个函数,方便以后使用
待解析JSON数组
函数:
1 public static Newtonsoft.Json.Linq.JArray GetToJsonList(string json) 2 { 3 Newtonsoft.Json.Linq.JArray jsonArr = (Newtonsoft.Json.Linq.JArray)JsonConvert.DeserializeObject(json); 4 return jsonArr; 5 }
实现:
搞定~
方式二(推荐):
第一步就是要根据这个JSON来写出对应的实体类。用来存放数据。这个实体类如何写的?其实非常简单。因为一般不需要手动自己写,当然,你要是喜欢也可以自己写。不过我一般使用网站直接转换。自己百度 查一下,JSON转C#实体类,就会有很多网站给你转。
我使用的是这个网站:http://www.bejson.com/convert/json2csharp/
{"message":"ok","nu":"367847964498","ischeck":"1","condition":"F00","com":"shunfeng","status":"200","state":"3","data":[{"time":"2017-09-21 09:33:09","ftime":"2017-09-21 09:33:09","context":"已签收,感谢使用顺丰,期待再次为您服务","location":""},{"time":"2017-09-21 09:09:48","ftime":"2017-09-21 09:09:48","context":"快件交给巩向涛,正在派送途中(联系电话:18806439871)","location":""},{"time":"2017-09-21 07:02:41","ftime":"2017-09-21 07:02:41","context":"快件到达 【淄博市桓台田庄速运营业点 】","location":""},{"time":"2017-09-20 15:32:00","ftime":"2017-09-20 15:32:00","context":"快件在【淄博市桓台县工业街营业点】已装车,准备发往下一站","location":""},{"time":"2017-09-20 13:37:08","ftime":"2017-09-20 13:37:08","context":"快件到达 【淄博市桓台县工业街营业点】","location":""},{"time":"2017-09-20 10:47:07","ftime":"2017-09-20 10:47:07","context":"快件在【淄博高新集散中心】已装车,准备发往下一站","location":""},{"time":"2017-09-20 10:15:47","ftime":"2017-09-20 10:15:47","context":"快件到达 【淄博高新集散中心】","location":""},{"time":"2017-09-19 23:20:18","ftime":"2017-09-19 23:20:18","context":"快件在【深圳总集散中心】已装车,准备发往下一站","location":""},{"time":"2017-09-19 22:39:27","ftime":"2017-09-19 22:39:27","context":"快件到达 【深圳总集散中心】","location":""},{"time":"2017-09-19 18:57:33","ftime":"2017-09-19 18:57:33","context":"快件在【深圳龙华新区华联社区营业部】已装车,准备发往下一站","location":""},{"time":"2017-09-19 16:12:21","ftime":"2017-09-19 16:12:21","context":"顺丰速运 已收取快件","location":""}]}
只需将JSON放到这个网站,自动给我们生成实体类即可
实体类:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace WindowsFormsApplication1 7 { 8 9 /// <summary> 10 /// JSON数据的实体类 11 /// summary> 12 public class Root 13 { 14 /// <summary> 15 /// 16 /// summary> 17 public string message { get; set; } 18 /// <summary> 19 /// 20 /// summary> 21 public string nu { get; set; } 22 /// <summary> 23 /// 24 /// summary> 25 public string ischeck { get; set; } 26 /// <summary> 27 /// 28 /// summary> 29 public string condition { get; set; } 30 /// <summary> 31 /// 32 /// summary> 33 public string com { get; set; } 34 /// <summary> 35 /// 36 /// summary> 37 public string status { get; set; } 38 /// <summary> 39 /// 40 /// summary> 41 public string state { get; set; } 42 /// <summary> 43 /// 44 /// summary> 45 public List<DataItem> data { get; set; } 46 } 47 public class DataItem 48 { 49 /// <summary> 50 /// 51 /// summary> 52 public string time { get; set; } 53 /// <summary> 54 /// 55 /// summary> 56 public string ftime { get; set; } 57 /// <summary> 58 /// 已签收,感谢使用顺丰,期待再次为您服务 59 /// summary> 60 public string context { get; set; } 61 /// <summary> 62 /// 63 /// summary> 64 public string location { get; set; } 65 } 66 67 }
实体类创建好后,我们还需要一个DLL文件,Newtonsoft.Json.DLL,看方式一
封装一个方法
1 /// <summary> 2 /// 将JSON转字符串(包括数组) 3 /// summary> 4 /// <typeparam name="T">typeparam> 5 /// <param name="json">param> 6 /// <returns>returns> 7 public static T JsonConvertObject<T>(string json) 8 { 9 return JsonConvert.DeserializeObject<T>(json); 10 }
调用即可
以下JSON帮助类
1 using System.Collections.Generic; 2 using System.IO; 3 using Newtonsoft.Json; 4 using Newtonsoft.Json.Linq; 5 6 namespace Tool 7 { 8 /// <summary> 9 /// Json帮助类 10 /// 使用前需引用开源项目类库:Newtonsoft.Json.dll 11 /// summary> 12 public sealed class JsonHelper 13 { 14 /// <summary> 15 /// 将对象序列化为json格式 16 /// summary> 17 /// <param name="obj">序列化对象param> 18 /// <returns>json字符串returns> 19 public static string SerializeObjct(object obj) 20 { 21 return JsonConvert.SerializeObject(obj); 22 } 23 /// <summary> 24 /// 将JSON转字符串(包括数组) 25 /// summary> 26 /// <typeparam name="T">typeparam> 27 /// <param name="json">param> 28 /// <returns>returns> 29 public static T JsonConvertObject<T>(string json) 30 { 31 return JsonConvert.DeserializeObject<T>(json); 32 } 33 /// <summary> 34 /// 解析JSON字符串生成对象实体 35 /// summary> 36 /// <typeparam name="T">对象类型typeparam> 37 /// <param name="json">json字符串param> 38 /// <returns>returns> 39 public static T DeserializeJsonToObject<T>(string json) where T:class 40 { 41 JsonSerializer serializer = new JsonSerializer(); 42 StringReader sr = new StringReader(json); 43 object obj = serializer.Deserialize(new JsonTextReader(sr), typeof(T)); 44 T t = obj as T; 45 return t; 46 } 47 /// <summary> 48 /// 解析JSON数组生成对象实体集合 49 /// summary> 50 /// <typeparam name="T">对象类型typeparam> 51 /// <param name="json">json数组param> 52 /// <returns>对象实体集合returns> 53 public static List<T> DeserializeJsonToList<T>(string json) where T : class 54 { 55 JsonSerializer serializer = new JsonSerializer(); 56 StringReader sr = new StringReader(json); 57 object obj = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>)); 58 List<T> list = obj as List<T>; 59 return list; 60 } 61 /// <summary> 62 /// 将JSON转数组 63 /// 用法:jsonArr[0]["xxxx"] 64 /// summary> 65 /// <param name="json">json字符串param> 66 /// <returns>returns> 67 public static JArray GetToJsonList(string json) 68 { 69 JArray jsonArr = (JArray)JsonConvert.DeserializeObject(json); 70 return jsonArr; 71 } 72 } 73 }