標籤:自訂類 nbsp tty pos 大神 效率 stringbu 方便 格式
由於最近項目裡面Model類特別多,而我需要編寫所有資料互動的介面,傳輸的格式是json,以前都是通過迴圈List<T>中的對象向StringBuilder對象中Apped字串產生json,而這樣一來這次項目豈不是得寫死人,想了想不能冒這個風險,因此覺得寫一個通用的Model轉json的方法如下:
/// <summary>/// 轉換T為json/// </summary>/// <typeparam name="T">類型</typeparam>/// <param name="model">對象</param>/// <returns>json</returns>private string ConvertToJson<T>(T model){ //擷取屬性集合 PropertyInfo[] properties = model.GetType().GetProperties(); StringBuilder sb = new StringBuilder(); sb.Append("{");
//遍曆屬性集合 for (int i = 0, len = properties.Length; i < len; i++) {
if(0!=i)sb.Append(","); sb.AppendFormat("\"{0}\":\"{1}\"", properties[i].Name.ToLower(),//屬性名稱作為 鍵 properties[i].GetValue(model, null).ToString());//屬性值作為 值
} sb.Append("}"); return sb.ToString();}
通過泛型可以接收任意自訂類型進行操作;
完成了這個之後突然我又發現還是要迴圈很多List<T>,也很麻煩,所以乾脆再重載一下,既可以直接轉Model,也可以直接轉List<Model>豈不是更加方便,於是(此處是完整代碼):
/// <summary>/// 轉換List<T>為json/// </summary>/// <typeparam name="T"></typeparam>/// <param name="models"></param>/// <returns></returns>private string ConvertToJson<T>(List<T> models){ StringBuilder sb = new StringBuilder(); for (int i = 0, len = models.Count; i < len; i++) { if (0 != i) sb.Append(","); sb.Append(ConvertToJson(models[i])); } return sb.ToString();}/// <summary>/// 轉換T為json/// </summary>/// <typeparam name="T"></typeparam>/// <param name="model"></param>/// <returns></returns>private string ConvertToJson<T>(T model){ //擷取屬性集合 PropertyInfo[] properties = model.GetType().GetProperties(); StringBuilder sb = new StringBuilder(); sb.Append("{");//遍曆屬性集合 for (int i = 0, len = properties.Length; i < len; i++) {
if(0!=i)sb.Append(","); sb.AppendFormat("\"{0}\":\"{1}\"", properties[i].Name.ToLower(),//屬性名稱作為 鍵 properties[i].GetValue(model, null).ToString());//屬性值作為 值
} sb.Append("}"); return sb.ToString();}
至此完畢,代碼中組織json格式效率方面還望有大神提出寶貴建議!
C# 將任意對象快速轉換為Json