需求場景:有時候我們抓到一段請求數據,JSON格式的字符串數據,需要放在接口里重現問題,我們就可能會用dynamic先接受數據,然后再轉換成特定數據發出請求。
方案一:直接使用特定對象T,來接受請求數據,不可以嗎? 當然可以,不過當JSON數據包含子對象時,我遇到了子數據對象丟失的問題。如果你們沒有遇到,可以使用。
方案二:使用字符串接受JSON格式的字符串數據,然后反序列化成對象,不過這個你需要對字符串進行處理,加反斜杠,如果你不嫌麻煩,可以使用。
方案三:我個人推薦:使用dynamic類型先接受數據,然后再轉換成T對象,比較方便,實用,下面是關鍵代碼:
思路:使用dynamic.ToString()方法,得到Json的字符串,然后使用反序列化方法,可以避免方案一的數據丟失問題。好用!!!推薦!!!
/// <summary> /// 模擬請求 /// </summary> /// <param name="fromBody">接收響應結果為加密之后的值</param> /// <returns>得到解密之后返回的響應結果值</returns> [HttpPost] public HttpResponseMessage Test(dynamic fromBody)//dynamic JObject { string a = fromBody.ToString(); T t= Newtonsoft.Json.JsonConvert.DeserializeObject<T>(a); return result; }