.net web api應用遇到的一些問題
阿新 • • 發佈:2018-12-07
1、呼叫webapi介面時,碰到一種情況:
通過webapi呼叫介面時,返回的json資料,死活轉換不成物件,轉換的物件一直為null;
webapi端程式碼:
[HttpGet] public string GetResponse() { WordResponse response = new WordResponse(); response.Result = false; response.PageNum = 12; return JsonHelper.ToJson(response); }
public static class JsonHelper { static readonly JavaScriptSerializer Serializer = new JavaScriptSerializer(); /// <summary> /// 將一個物件轉換成json格式字串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns></returns> public static string ToJson<T>(this T t) { return Serializer.Serialize(t); } /// <summary> /// 把物件轉換為JSON字串 /// </summary> /// <param name="o">物件</param> /// <returns>JSON字串</returns> public static string ToJSON(this object o) { if (o == null) { return null; } return JsonConvert.SerializeObject(o); } /// <summary> /// 把Json文字轉為實體 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="input"></param> /// <returns></returns> public static T FromJSON<T>(this string input) { try { return JsonConvert.DeserializeObject<T>(input); } catch (Exception ex) { return default(T); } } }
接收端程式碼:
string serviceAddress = string.Format("http://192.168.168.152:9094/api/Word/GetResponse"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress); request.Method = "GET"; request.ContentType = "application/json;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); new SysLogInfoService().SysErrorLog("報告頁數", "報告頁數", retString); WordResponse wordResponse1 = JsonHelper.ToObject<WordResponse>(retString); WordResponse wordResponse = JsonTool.FromJSON<WordResponse>(retString);
最後發現,通過api返回json資料時,不要再轉換為json,否則返回的json中會多一些斜線/,導致轉換為物件失敗,所以物件為空。