<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      復雜json字符串轉換成通用Json對象

      最近工作中,遇到了一個轉發請求的需求場景,需要寫一個程序,專門負責將前端的json請求通過.net程序轉發給到java的api,而且是根據前端指定的接口名轉發給不同的api。

      在這種情況下,如果要針對每個api去定義json字符串的接收對象,顯然工作量會很大,而且也不靈活,一旦有api的變動,作為中間轉發程序都得跟著改

      所以這個中間轉發程序將api返回的json字符串轉換成通用的json對象再經過處理轉發就很有必要。

      廢話不多說,直接貼出本人將json字符串轉換成通用json對象的核心方法

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Net;
      using System.Net.Http;
      using System.Web.Http;
      
      using Newtonsoft.Json;
      using Newtonsoft.Json.Linq;
      
      namespace Transfer.Controllers
      {
          public class TransferController : ApiController
          {
              [HttpPost]
              public HttpResponseMessage Transfer(HttpRequestMessage request)
              {
                  string postStr = request.Content.ReadAsStringAsync().Result;
      
                  ApiParam param = JsonConvert.DeserializeObject<ApiParam>(postStr);
      
                  string json= "{\"success\":false,\"errorCode\":\"500\",\"errorMessage\":\"參數有誤\"}";
      
                  if (param.Uri == "")
                  {
                      return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
                  }
      
                  json = TransferManager.Instance.TrasferRequest(param);
      
                  try
                  {
                      JObject jobj = JsonConvert.DeserializeObject<JObject>(json);//把上面的json字符串初步轉換為 Jobject對象
                      //Newtonsoft.Json.Linq.JObject jobj = obj as Newtonsoft.Json.Linq.JObject;//把上面的obj轉換為 Jobject對象
      
                      //進一步深度解析復雜json字符串為json通用對象
                      jobj = ExtractObj(jobj);
      
                      return Request.CreateResponse(HttpStatusCode.OK, jobj);
                  }
                  catch(Exception ex)
                  {
                      json = "{\"success\":false,\"errorCode\":\"500\",\"errorMessage\":\"請求接口失?。?/span>" + json + "\"}";
      
                      Object obj = JsonConvert.DeserializeObject(json);
                      Newtonsoft.Json.Linq.JObject jobj = obj as Newtonsoft.Json.Linq.JObject;//把上面的obj轉換為 Jobject對象
      
                      return Request.CreateResponse(HttpStatusCode.OK, jobj);
                  }
                  //return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"),StatusCode= HttpStatusCode.OK };
              }
      
              /// <summary>
              /// 深度解析復雜json字符串為json通用對象
              /// </summary>
              /// <param name="job"></param>
              /// <returns></returns>
              public static JObject ExtractObj(JObject job)
              {
                  foreach (var item in job)
                  {
                      try
                      {
                          //得到鍵當前值
                          string itemStr = item.Value.ToString();
                          if(itemStr.StartsWith("["))
                          {
                              //數組只能用數組的轉換對象進行轉換
                              JArray itemJArrObj= JsonConvert.DeserializeObject<JArray>(itemStr);
                              //遞歸調用
                              JArray rArrobj = ExtractArrObj(itemJArrObj);
                              //為當前鍵更新為對象值
                              job[item.Key] = rArrobj;
                          }
                          else
                          {
                              //嘗試轉化為對象(可能失?。?/span>
                              JObject itemJObj = JsonConvert.DeserializeObject<JObject>(itemStr);
                              //遞歸調用
                              JObject robj = ExtractObj(itemJObj);
                              //為當前鍵更新為對象值
                              job[item.Key] = robj;
                          }
                          
                      }
                      catch
                      {
                      }
                  }
                  return job;
              }
      
           //針對json中的數組進行處理
              public static JArray ExtractArrObj(JArray jarr)
              {
                  foreach(var item in jarr)
                  {
                      //得到當前值
                      string itemStr = item.ToString();
      
                      //嘗試轉化為對象(可能失?。?/span>
                      JObject itemJObj = JsonConvert.DeserializeObject<JObject>(itemStr);
                      //遞歸調用
                      JObject robj = ExtractObj(itemJObj);
                  }
      
                  return jarr;
              }
          }
      }

      以上深度解析json字符串代碼是本人費了一番功夫折騰出來的,并親測有效,如果有類似需求的伙伴可以拿去參考

      posted @ 2020-07-06 10:37  月井石  閱讀(2522)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 羞羞影院午夜男女爽爽免费视频| 同性男男黄gay片免费| 99久久久国产精品免费蜜臀| 北条麻妃42部无码电影| 亚洲成人精品综合在线| 右玉县| 亚洲成av人片天堂网无码| 国产成AV人片久青草影院| 26uuu另类亚洲欧美日本| 粉嫩蜜臀av一区二区三区| 精品久久人人妻人人做精品| 亚洲国产成熟视频在线多多| 国产成人啪精品午夜网站| 宾川县| 成人午夜伦理在线观看| 香港日本三级亚洲三级| 镇安县| 色偷偷偷久久伊人大杳蕉| 国产精品揄拍100视频| 国产亚洲精品aaaa片app| 亚洲伊人精品久视频国产| 国产欧美一区二区精品仙草咪| 欧美寡妇xxxx黑人猛交| 国产精品中文第一字幕| 色综合天天综合网中文伊| 国产精品久久久久久无毒不卡| 亚洲国产良家在线观看| 日韩人妻中文字幕精品| 国产精品特级毛片一区二区三区| 少妇高潮激情一区二区三| 久草热8精品视频在线观看| 不卡一区二区三区四区视频| 亚洲精品久久久久久下一站| 精品国产亚洲午夜精品av| 亚洲精品久久麻豆蜜桃| 亚洲日本精品国产第一区| 成人亚欧欧美激情在线观看| aaa少妇高潮大片免费看| 日韩国产精品无码一区二区三区| 护士张开腿被奷日出白浆| 中国猛少妇色xxxxx|