C#解析JSON数组

方式一

第一步:使用前,需下载: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 }

 

转载于:https://www.cnblogs.com/chenyanbin/p/11200415.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值