C# 將任意對象快速轉換為Json

來源:互聯網
上載者:User

標籤:自訂類   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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.