/// <summary> /// Dictionary转换为Json(多对象) [{"key":"dic.key"}, {"value":"dic.value"}] /// </summary> /// <param name="dic">要追加的键值对</param> /// <param name="encodeLevel">编码等级</param> /// <returns>Json字符串</returns> private static string Dic2JsonSingleItem(Dictionary <string, string> dic, HTMLEncodeLevel encodeLevel) { bool hasData = false; var sb = new StringBuilder(); if (dic.Count > 0) { hasData = true; sb.Append("{"); //循环结果集,拼接成Json foreach (var kv in dic) { //遍历列 //获取当前列的名称和值,拼接到JSON,值要加"''" sb.Append(string.Format("\"{0}\":\"{1}\",", kv.Key, HtmlEncode(kv.Value, encodeLevel))); } //去年最后一项后面的逗号 sb.Remove(sb.Length - 1, 1); //结束标记 sb.Append("}"); } return(hasData ? sb.ToString() : "{}"); }
/// <summary> /// Dictionary转换为Json /// </summary> /// <param name="dic">要追加的键值对</param> /// <param name="encodeLevel">编码等级</param> /// <returns>Json字符串</returns> private static string Dic2JsonMultiterm(Dictionary <string, string> dic, HTMLEncodeLevel encodeLevel) { bool hasData = false; var sb = new StringBuilder(); if (dic.Count > 0) { hasData = true; sb.Append("["); //循环结果集,拼接成Json foreach (var kv in dic) { //遍历列 //获取当前列的名称和值,拼接到JSON,值要加"''" sb.Append("{\"key\":\"" + kv.Key + "\",\"value\":\"" + HtmlEncode(kv.Value, encodeLevel) + "\"},"); } //去年最后一项后面的逗号 sb.Remove(sb.Length - 1, 1); //结束标记 sb.Append("]"); } return(hasData ? sb.ToString() : "{}"); }
/// <summary> /// DataReader转换为Json /// </summary> /// <param name="dr">DataReader对象</param> /// <param name="JsonName">JsonName</param> /// <param name="encodeLevel">编码等级</param> /// <returns>Json字符串</returns> public static string DataReader2Json(IDataReader dr, string JsonName, HTMLEncodeLevel encodeLevel) { bool hasData = false; var sb = new StringBuilder(); if (dr.FieldCount > 0) { sb.Append("{"); sb.Append(string.Format("\"{0}\":[", JsonName)); //循环结果集,拼接成Json while (dr.Read()) { hasData = true; sb.Append("{"); //遍历列 for (int i = 0; i < dr.FieldCount; i++) { //如果不是最后一列,则在后面加上"," if (i < dr.FieldCount - 1) { //获取当前列的名称和值,拼接到JSON,值要加"''" sb.Append(string.Format("\"{0}\":\"{1}\",", dr.GetName(i), HtmlEncode(dr[i].ToString(), encodeLevel))); } else { sb.Append(string.Format("\"{0}\":\"{1}\"", dr.GetName(i), HtmlEncode(dr[i].ToString(), encodeLevel))); } } //单条记录结束 sb.Append("},"); } //去年最后一项后面的逗号 sb.Remove(sb.Length - 1, 1); //结束标记 sb.Append("]}"); } return(hasData ? sb.ToString() : "{\"" + JsonName + "\":[]}"); }
/// <summary> /// 编码过滤特殊字符 /// </summary> /// <param name="str">要编码的字符串</param> /// <param name="level">编码等级</param> /// <returns></returns> public static string HtmlEncode(string str, HTMLEncodeLevel level) { if (string.IsNullOrEmpty(str)) { return(string.Empty); } switch (level) { case HTMLEncodeLevel.None: return(str); case HTMLEncodeLevel.Light: return(HtmlEncode_Light(str)); case HTMLEncodeLevel.Medium: return(HtmlEncode_Medium(str)); //case HTMLEncodeLevel.Heavy: // return HtmlEncode_Heavy(str); } return(str); }
/// <summary> /// 数组转换为json格式 /// </summary> /// <param name="arr">数组对象</param> /// <param name="encodeLevel">编码等级</param> /// <returns></returns> public static string Array2Json(string[] arr, HTMLEncodeLevel encodeLevel) { var sb = new StringBuilder(); sb.Append("["); for (int i = 0; i < arr.Length; i++) { sb.Append("{"); if (i == arr.Length - 1) { sb.Append(string.Format("\"{0}\":\"{1}\"", "n", HtmlEncode(arr[i], encodeLevel))).Append("}"); } else { sb.Append(string.Format("\"{0}\":\"{1}\"", "n", HtmlEncode(arr[i], encodeLevel))).Append("},"); } } sb.Append("]"); return(sb.ToString()); }
/// <summary> /// 将DataTable转化成JSON /// </summary> /// <param name="dt">DataTable</param> /// <param name="JsonName">JsonName</param> /// <param name="encodeLevel">编码等级</param> /// <returns></returns> public static string DataTable2Json(DataTable dt, string JsonName, HTMLEncodeLevel encodeLevel) { //Exception Handling if (dt != null && dt.Rows.Count > 0) { var JsonString = new StringBuilder(); JsonString.Append("{"); JsonString.Append(string.Format("\"{0}\":[", JsonName)); for (int i = 0; i < dt.Rows.Count; i++) { JsonString.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { if (j < dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + HtmlEncode(dt.Rows[i][j].ToString().Trim(), encodeLevel) + "\","); } else if (j == dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + HtmlEncode(dt.Rows[i][j].ToString().Trim(), encodeLevel) + "\""); } } /*end Of String*/ if (i == dt.Rows.Count - 1) { JsonString.Append("}"); } else { JsonString.Append("},"); } } JsonString.Append("]}"); return(JsonString.ToString()); } return("{\"" + JsonName + "\":[]}"); }
/// <summary> /// DataReader转换为Json /// </summary> /// <param name="sdr">DataReader对象</param> /// <param name="JsonName">JsonName</param> /// <param name="encodeLevel">编码等级</param> /// <returns>Json字符串</returns> public static string DataReader2Json(SqlDataReader sdr, string JsonName, HTMLEncodeLevel encodeLevel) { var sb = new StringBuilder(); if (sdr.HasRows) { sb.Append("{"); sb.Append(string.Format("\"{0}\":[", JsonName)); //循环结果集,拼接成Json while (sdr.Read()) { sb.Append("{"); //遍历列 for (int i = 0; i < sdr.FieldCount; i++) { //如果不是最后一列,则在后面加上, if (i < sdr.FieldCount - 1) { //获取当前列的名称和值,拼接到JSON,值要加'' sb.Append(string.Format("\"{0}\":\"{1}\",", sdr.GetName(i), HtmlEncode(sdr[i].ToString(), encodeLevel))); } else { sb.Append(string.Format("\"{0}\":\"{1}\"", sdr.GetName(i), HtmlEncode(sdr[i].ToString(), encodeLevel))); } } //单条记录结束 sb.Append("},"); } //去掉最后一项后面的逗号 sb.Remove(sb.Length - 1, 1); //结束标记 sb.Append("]}"); } return(sb.ToString()); }
/// <summary> /// 追加Json属性 /// </summary> /// <param name="Json"></param> /// <param name="diction">要追加的键值对</param> /// <param name="encodeLevel">编码等级</param> /// <returns>Json字符串</returns> public static string Append2Json(string Json, Dictionary <string, string> diction, HTMLEncodeLevel encodeLevel) { var sb = new StringBuilder(Json); sb.Replace('}', ',', sb.Length - 1, 1); //加上其他键值 foreach (var i in diction) { sb.Append(string.Format("\"{0}\":\"{1}\",", i.Key, HtmlEncode(i.Value, encodeLevel))); } //去年最后一项后面的逗号 sb.Remove(sb.Length - 1, 1); //结束标记 sb.Append("}"); return(sb.ToString()); }