你的位置:首页 > ASP.net教程

[ASP.net教程]c#使用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         }

      由此就形成了我们新的接口体系。