解析格式1:
{ "code": 200, "message": "操作成功", "data": { "Id": "123456" }, "success": true }
在解析之前代码段中需要添加命名空间、:
using Newtonsoft.Json.Linq; using Newtonsoft.Json;
代码示例:
public string CreateMessage(string url) { string ret = string.Empty; string consumerId = ""; try { System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url); webReq.Method = "POST"; webReq.ContentType = "application/json"; webReq.Headers.Add("Authorization", "bearer ******"); Stream postData = webReq.GetRequestStream(); postData.Close(); HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(webResp.GetResponseStream(), Encoding.UTF8); ret = sr.ReadToEnd(); //此处解析 JObject jsonObj = JObject.Parse(ret); string code = jsonObj["code"].ToString(); if (code == "200") { //拿到ID的值 consumerId = ((JObject)jsonObj["data"])["Id"].ToString(); } } catch (Exception ex) { //LogManager.LogInstance.WriteLog("时间:" + DateTime.Now + "/n 请求出错原因" + ex.ToString()); } return consumerId; }
解析格式2:
{ "code": 200, "message": "操作成功", "data": [ { "msgId": "123456", "msgType": "type1", "content": "{\"eventId\":\"20161111\",\"dateTime\":\"2021-06-17\"}" }, { "msgId": "456789", "msgType": "type2", "content": "{\"eventId\":\"20161112\",\"dateTime\":\"2021-06-17\"}" } ] }
封装格式1:
{ "ddCode": "001", "lists": [{ "Time": "2021-6-17 18:12:14", "Code": "123456", "Image": "****", }] }
代码示例:
1、封装json数据需要封装数据
public class FaceMessage { public string ddCode{ get; set; } public List<lists> lists { get; set; } } public class lists { public string Time { get; set; } public string Code { get; set; } public string Image { get; set; } }
2、代码解析2与封装1示例:
public string GetWarningData(string consumerId) { string ret = string.Empty; try { string nUrl = "https://****/messages?consumerId=" + consumerId + "&autoCommit=true"; System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(nUrl); webReq.Method = "POST"; webReq.ContentType = "application/json"; webReq.Headers.Add("Authorization", "bearer *******"); //获取服务端返回 HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); ret = sr.ReadToEnd().Trim(); JObject jo = (JObject)JsonConvert.DeserializeObject(ret); string code = jo["code"].ToString(); #region log日志 //存储 拉取数据code值,通道ID,时间 warninfoManageservice.SaveLog(code, consumerId); #endregion if (code == "200") { JArray jar = JArray.Parse(jo["data"].ToString()); //如果封装多条数据,需要将faceobj和lists放在此处 //FaceMessage faceobj = new FaceMessage(); //faceobj.lists = new List<lists>(); for (var i = 0; i < jar.Count; i++) { JObject j = JObject.Parse(jar[i].ToString()); string msgId = j["msgId"].ToString(); JObject con = JObject.Parse(jar[i]["content"].ToString()); string dt = con["dateTime"].ToString(); //至此解析完成 //封装数据 //如果封装多条lists需要将faceobj和lists两个新的对象拿到for循环外面。 FaceMessage faceobj = new FaceMessage(); faceobj.lists = new List<lists>(); faceobj.ddCode = "001"; lists objlist = new lists(); //实例化JSON数组对象,用于添加JSON数组集合 objlist.Time =dt; objlist.Code ="123456"; faceobj.lists.Add(objlist); //添加JSON数组集合封装完成 string res = JsonConvert.SerializeObject(faceobj);//转成json数据 } } sr.Close(); } catch (Exception ex) { } return ret; }
封装格式2:
{ "ddCode": "001", "shijulists": [{ "sid": "1", "sname": "青岛市公安局", "fenjulists": [{ "fid": "000001", "fname": "黄岛分局" }, { "fid": "000002", "fname": "开发区分局" }] }, { "sid": "2", "sname": "潍坊市公安局", "fenjulists": [{ "fid": "000005", "fname": "青州分局" }, { "fid": "000006", "fname": "寿光分局" }] }] }
1、创建model
public class PoliceMessage { public string code { get; set; } public List<shiju> shijulist { get; set; } } //市局model public class shiju { public string sid { get; set; } public string sname { get; set; } public List<fenju> fenjulist { get; set; } } //分局model public class fenju { public string fid { get; set; } public string fname { get; set; } }
2、代码示例:
public ActionResult GetPoliceMessage() {
//根据检索条件查询市局数据 var data = companyBLL.GetPolice(); string res = ""; PoliceMessage pm = new PoliceMessage(); List<shiju> shijulist = new List<shiju>();//市局list if (data.Rows.Count > 0) { for (int i = 0; i < data.Rows.Count; i++) { pm.code = "200"; //市局 shiju sj = new shiju(); sj.sid = data.Rows[i]["ID"].ToString(); sj.sname = data.Rows[i]["Name"].ToString(); shijulist.Add(sj); //分局 List<fenju> fjlist = new List<fenju>();//分局list
//根据检索条件查询分局数据 var fendata = companyBLL.GetFenjuMessage(sj.sid); if (fendata.Rows.Count > 0) { for (int j = 0; j < fendata.Rows.Count; j++) { fenju fj = new fenju(); fj.fid = fendata.Rows[j]["fid"].ToString(); fj.fname = fendata.Rows[j]["fname"].ToString(); fjlist.Add(fj); } sj.fenjulist = fjlist; } pm.shijulist= shijulist; } res = JsonConvert.SerializeObject(pm);//转成json数据 } return Content(new ResParameter { code = ResponseCode.success, info = "1", data = res }.ToJson()); }
分类:
.net
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)