• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#使用json接口

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

      前些日子将项目由使用数据库改版为使用接口,由于接口返回的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                 }

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中如何获取系统环境变量发布时间:2022-07-10
下一篇:
VisualStudio创建封装自己的代码段(C#)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap