程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#使用json接口,

c#使用json接口,

編輯:C#入門知識

c#使用json接口,


      前些日子將項目由使用數據庫改版為使用接口,由於接口返回的xml中多了一些附加信息,導致xml轉化後的DataTable無法儲存在MemCache中。這時可以將xml序列化為其對應的類,當然由於當時對xml的序列化使用不多所以改為接收json轉化為對應的類,這裡主要展示我如何使用json的。

            在接收到傳過來的json字符串後,使用JsonConvert.DeserializeObject<T>(string value);轉化為相應的類型。於是我寫下了需要轉化的第一個類型,如下:

   /// <summary>
    /// 用於序列化json字符串
    /// </summary>
   public class JsonSet
    {
        public string message{set;get;}
        public string code { set; get; }
        public DataTable entitylist { set; get; }
      
    }

  然後改造接口調用中間函數

      private static bool GetJsonSearchData<T>(string param, string url, string method, int length, ref T jsonResult, string encodeWay = "gb2312")
        {
            bool isSucc = true;
            StringBuilder sb = GetSearchData(param, url, method, length, encodeWay);
            if (sb != null && sb.Length > 0)
            {
                try
                {
                    jsonResult = JsonConvert.DeserializeObject<T>(sb.ToString());
                }
                catch
                {
                    isSucc = false;
                }
            }
            return isSucc;
        }

 使用方法如:

1   JsonSet jset = new JsonSet();
2             SearchInterface.PostSearchData<JsonSet>(parms, url, ref jset);
3             if (jset != null && jset.entitylist != null)
4             {
5                 return jset.entitylist;
6             }

        由於完全貼合json字符格式創建的類,返回的DataTable格式就是標准的格式,解決了在Memcache中存儲的問題。後來在使用中發現原先需要將DataTable轉化為相應的對象,如果直接將json轉化為相應對象,豈不是要省點事。但項目中所用的類如果都要改造的話改動太多,也不方便,後來發現json字符串相對這些類僅多了code、message兩個屬性,於是將對象改造為如下

1   public  class JsonTList<T>
2     {
3         public string code { set; get; }
4         public string message { set; get; }
5         public List<T> entitylist { set; get; }
6     }

使用方式如

1    JsonTList<AgtInfoEntity> jT = new JsonTList<AgtInfoEntity>();
2                 SearchInterface.PostSearchData<JsonTList<AgtInfoEntity>>(parms, url, ref jT);
3                 if (jT != null && jT.entitylist != null && jT.entitylist.Count > 0)
4                 {
5                     agtInfoEntity = jT.entitylist;
6                     CacheManager.Set(cacheName, agtInfoEntity);
7                 }

      由此就形成了我們新的接口體系。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved