ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

写api接口的帮助类,排序字典和json、xml 之间的相互转换

2022-07-07 14:08:56  阅读:113  来源: 互联网

标签:xml DataDic return string json api pair public


 

  1 /// <summary>
  2     /// api接口帮助类 字典和json、xml 之间的相互转换
  3     /// </summary>
  4     public class ZhongBangApiHelper
  5     {
  6         public ZhongBangApiHelper()
  7         {
  8 
  9         }
 10 
 11         /// <summary>
 12         /// 排序字典
 13         /// </summary>
 14         private readonly SortedDictionary<string, object> DataDic = new SortedDictionary<string, object>();
 15 
 16         /// <summary>
 17         /// 设置某个字段的值
 18         /// </summary>
 19         /// <param name="key">字段名</param>
 20         /// <param name="value">字段值</param>
 21         public void SetValue(string key, object value)
 22         {
 23             DataDic[key] = value;
 24         }
 25 
 26         /// <summary>
 27         /// 获取某个字段的值
 28         /// </summary>
 29         /// <param name="key">字段名</param>
 30         /// <returns></returns>
 31         public object GetValue(string key)
 32         {
 33             DataDic.TryGetValue(key, out object o);
 34             return o;
 35         }
 36 
 37         /// <summary>
 38         /// 判断某个字段是否已设置
 39         /// </summary>
 40         /// <param name="key"></param>
 41         /// <returns></returns>
 42         public bool IsSet(string key)
 43         {
 44             object o = null;
 45             DataDic.TryGetValue(key, out o);
 46             if (null != o)
 47                 return true;
 48             else
 49                 return false;
 50         }
 51 
 52 
 53         /// <summary>
 54         /// Dictionary序列化成Json
 55         /// </summary>
 56         /// <returns></returns>
 57         public string ToJson()
 58         {
 59             string jsonStr = JsonMapper.ToJson(DataDic);
 60             return jsonStr;
 61         }
 62 
 63         /// <summary>
 64         /// 将Dictionary转化成Xml
 65         /// </summary>
 66         /// <returns></returns>
 67         /// 
 68         public string ToXml()
 69         {
 70             //数据为空时不能转化为xml格式
 71             if (0 == DataDic.Count)
 72             {
 73                 throw new Exception("数据为空!");
 74             }
 75 
 76             string xml = "<xml>";
 77             foreach (KeyValuePair<string, object> pair in DataDic)
 78             {
 79                 //字段值不能为null,会影响后续流程
 80                 if (pair.Value == null)
 81                 {
 82                     throw new Exception("内部含有值为null的字段!");
 83                 }
 84 
 85                 if (pair.Value.GetType() == typeof(int))
 86                 {
 87                     xml += "<" + pair.Key + ">" + pair.Value + "</" + pair.Key + ">";
 88                 }
 89                 else if (pair.Value.GetType() == typeof(string))
 90                 {
 91                     xml += "<" + pair.Key + ">" + "<![CDATA[" + pair.Value + "]]></" + pair.Key + ">";
 92                 }
 93                 else//除了string和int类型不能含有其他数据类型
 94                 {
 95                     throw new Exception("字段数据类型错误!");
 96                 }
 97             }
 98             xml += "</xml>";
 99             return xml;
100         }
101 
102 
103         /// <summary>
104         /// 将xml转为 对象并返回对象内部的数据
105         /// </summary>
106         /// <param name="xml"></param>
107         /// <returns>经转换得到的Dictionary</returns>
108         /// 
109         public SortedDictionary<string, object> FromXml(string xml)
110         {
111             if (string.IsNullOrEmpty(xml))
112             {
113                 throw new Exception("将空的xml串转换为对象不合法!");
114             }
115 
116             XmlDocument xmlDoc = new XmlDocument();
117             xmlDoc.LoadXml(xml);
118             XmlNode xmlNode = xmlDoc.FirstChild;//获取到根节点<xml>
119             XmlNodeList nodes = xmlNode.ChildNodes;
120             foreach (XmlNode xn in nodes)
121             {
122                 XmlElement xe = (XmlElement)xn;
123                 DataDic[xe.Name] = xe.InnerText;//获取xml的键值对到 内部的数据中
124             }
125 
126             return DataDic;
127         }
128 
129         /// <summary>
130         /// Dictionary格式转化成url参数格式
131         /// </summary>
132         /// <returns>url格式串</returns>
133         /// 
134         public string ToUrl()
135         {
136             string buff = "";
137             foreach (KeyValuePair<string, object> pair in DataDic)
138             {
139                 if (pair.Value == null)
140                 {
141                     Log.Error(this.GetType().ToString(), "DataDic内部含有值为null的字段!");
142                     throw new Exception("DataDic内部含有值为null的字段!");
143                 }
144 
145                 if (pair.Key != "sign" && pair.Value.ToString() != "")
146                 {
147                     buff += pair.Key + "=" + pair.Value + "&";
148                 }
149             }
150             buff = buff.Trim('&');
151             return buff;
152         }
153 
154 
155         /// <summary>
156         /// 获取Dictionary
157         /// </summary>
158         /// <returns></returns>
159         public SortedDictionary<string, object> GetValues()
160         {
161             return DataDic;
162         }
163 
164         /// <summary>
165         /// 清空Dictionary
166         /// </summary>
167         public void ClearDic()
168         {
169             DataDic.Clear();
170         }
171 
172         /// <summary>
173         /// 字符串转为base64
174         /// </summary>
175         /// <param name="str"></param>
176         /// <returns></returns>
177         public string ToBase64(string str)
178         {
179             var byteStr = Encoding.UTF8.GetBytes(str);
180             var bs = Convert.ToBase64String(byteStr);
181             return bs.ToString();
182         }
183 
184     }

 

标签:xml,DataDic,return,string,json,api,pair,public
来源: https://www.cnblogs.com/heidashuaiGo/p/16454409.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有