解析格式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()); }

 

posted on 2021-06-18 17:05  我的梦想是开个小店  阅读(1219)  评论(0编辑  收藏  举报