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 }