using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Data;
using System.Collections;
namespace DotNet.Utilities
{
/// <summary>
/// 转换Json格式帮助类
/// </summary>
public class JsonHelper
{
/// <summary>
/// DataTable转Json
/// </summary>
/// <param name="dt">table数据集</param>
/// <param name="dtName">json名</param>
/// <returns>例子{"JSON":[{"STO_ID":"26","STO_NO":"SEORD14041500014","PRO_NO":"SEORD14041500012","TOTAL_MONEY":"4.0000"}]}</returns>
public static string DataTableToJson(DataTable dt, string dtName)
{
try
{
StringBuilder sb = new StringBuilder();
sb.Append("{\"");
sb.Append(dtName);
sb.Append("\":[");
if (DataTableHelper.IsExistRows(dt))
{
foreach (DataRow dr in dt.Rows)
{
sb.Append("{");
foreach (DataColumn dc in dr.Table.Columns)
{
sb.Append("\"");
sb.Append(dc.ColumnName);
sb.Append("\":\"");
if (dr[dc] != null && dr[dc] != DBNull.Value && dr[dc].ToString() != "")
sb.Append(dr[dc]).Replace("\\", "/");
else
sb.Append("");
sb.Append("\",");
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append("},");
}
sb = sb.Remove(sb.Length - 1, 1);
}
sb.Append("]}");
return JsonCharFilter(sb.ToString());
}
catch (Exception ex)
{
Logger.WriteLog(ex.Message);
return "";
}
}
/// <summary>
/// Hashtable表转JSON
/// </summary>
/// <param name="data"></param>
/// <param name="dtName">JSON名,例:JSON</param>
/// <returns></returns>
public static string HashtableToJson(Hashtable data, string dtName)
{
try
{
StringBuilder sb = new StringBuilder();
sb.Append("{\"");
sb.Append(dtName);
sb.Append("\":[{");
foreach (object key in data.Keys)
{
object value = data[key];
sb.Append("\"");
sb.Append(key);
sb.Append("\":\"");
if (!String.IsNullOrEmpty(value.ToString()) && value != DBNull.Value)
{
sb.Append(value).Replace("\\", "/");
}
else
{
sb.Append(" ");
}
sb.Append("\",");
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append("}]}");
return JsonCharFilter(sb.ToString());
}
catch (Exception ex)
{
Logger.WriteLog(ex.Message);
return "";
}
}
/// <summary>
/// 表格返回JSON
/// </summary>
/// <param name="dt">数据行</param>
/// <param name="pageIndex">当前页面</param>
/// <param name="pqGrid_Sort">要显示字段</param>
/// <param name="count"></param>
/// <returns></returns>
public static string PqGridPageJson(DataTable dt, int pageIndex, string pqGrid_Sort, int count)
{
try
{
string[] Sort_Field = pqGrid_Sort.Split(',');
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"totalRecords\": " + count + ",");
sb.Append("\"curPage\": " + pageIndex + ",");
sb.Append("\"data\": [");
if (DataTableHelper.IsExistRows(dt))
{
foreach (DataRow dr in dt.Rows)
{
sb.Append("[");
foreach (string item in Sort_Field)
{
sb.Append("\"");
if (dr[item] != null && dr[item] != DBNull.Value && dr[item].ToString() != "")
sb.Append(dr[item]);
else
sb.Append("");
sb.Append("\",");
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append("],");
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append("]");
sb.Append("}");
}
return sb.ToString();
}
catch (Exception ex)
{
Logger.WriteLog(ex.Message);
return "";
}
}
/// <summary>
/// 表格返回JSON
/// </summary>
/// <param name="pqGrid_Sort">要显示字段</param>
/// <param name="count"></param>
/// <returns></returns>
public static string PqGridJson(DataTable dt, string pqGrid_Sort)
{
try
{
string[] Sort_Field = pqGrid_Sort.Split(',');
StringBuilder sb = new StringBuilder();
if (DataTableHelper.IsExistRows(dt))
{
sb.Append("[");
foreach (DataRow dr in dt.Rows)
{
sb.Append("[");
foreach (string item in Sort_Field)
{
sb.Append("\"");
if (dr[item] != null && dr[item] != DBNull.Value && dr[item].ToString() != "")
sb.Append(dr[item]);
else
sb.Append("");
sb.Append("\",");
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append("],");
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append("]");
}
return sb.ToString();
}
catch (Exception ex)
{
Logger.WriteLog(ex.Message);
return "";
}
}
/// <summary>
/// 表格返回JSON
/// </summary>
/// <param name="pqGrid_Sort">要显示字段</param>
/// <param name="count"></param>
/// <returns></returns>
public static string GridTable(DataTable dt, string pqGrid_Sort)
{
try
{
string[] Sort_Field = pqGrid_Sort.Split(',');
StringBuilder sb = new StringBuilder();
if (DataTableHelper.IsExistRows(dt))
{
foreach (DataRow dr in dt.Rows)
{
sb.Append("<tr>");
foreach (string item in Sort_Field)
{
if (dr[item] != null && dr[item] != DBNull.Value && dr[item].ToString() != "")
sb.Append("<td>" + dr[item] + "</td>");
else
sb.Append("<td></td>");
}
sb.Append("</tr>");
}
}
return sb.ToString();
}
catch (Exception ex)
{
Logger.WriteLog(ex.Message);
return "";
}
}
/// <summary>
/// Json特符字符过滤
/// </summary>
/// <param name="sourceStr">要过滤的源字符串</param>
/// <returns>返回过滤的字符串</returns>
private static string JsonCharFilter(string sourceStr)
{
return sourceStr;
}
}
}