当前位置:首页 > Windows程序 > 正文

c#使用json接口

2021-03-26 Windows程序

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

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

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67979.html