zoukankan      html  css  js  c++  java
  • 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                 }

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

     

  • 相关阅读:
    learning.py报错
    Swift与OC的相互调用
    微信小程序地图之逆地理编码
    微信小程序-滑动视图注意事项
    animate.css动画种类
    利用WKWebView实现js与OC交互注意事项
    jquey下eq()的使用注意事项
    如何判断html页面停止滚动?
    git 常见报错
    openresty中http请求body数据过大的处理方案
  • 原文地址:https://www.cnblogs.com/xietong/p/4766346.html
Copyright © 2011-2022 走看看