using Infragistics.Win.UltraWinGrid;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace Core.StlMes.Client.Mcp.VRP.Vrp
{
public class JsonHelper
{
public static string ToJson(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("'");
jsonBuilder.Append(GetLanguageFormat(dt.Columns[j].ColumnName, true));
jsonBuilder.Append("':'");
jsonBuilder.Append(escape(dt.Rows[i][j].ToString()));
jsonBuilder.Append("',");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
public static string ToJson(UltraGrid dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Rows.Count; j++)
{
jsonBuilder.Append("'");
jsonBuilder.Append(GetLanguageFormat(dt.Rows[j].ToString(), true));
jsonBuilder.Append("':'");
jsonBuilder.Append(escape(dt.Rows[i].ToString()));
jsonBuilder.Append("',");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
private static string GetLanguageFormat(string strName, bool isLowerBegin)
{
string[] strs = strName.Split('_');
strName = "";
for (int i = 0; i < strs.Length; i++)
{
if (i == 0 && isLowerBegin)
{
strName += strs[i].ToLower();
}
else
{
strName += strs[i].Substring(0, 1).ToUpper() + strs[i].Substring(1).ToLower();
}
}
return strName;
}
public static string ToJson(DataRow dr)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{");
for (int j = 0; j < dr.Table.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dr.Table.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(escape(dr[j].ToString()));
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
public static string ToJson(UltraGridRow row)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{");
for (int j = 0; j < row.Cells.Count; j++)
{
jsonBuilder.Append("\"");
//jsonBuilder.Append(row.Cells[j].Column.Key);
jsonBuilder.Append(GetLanguageFormat(row.Cells[j].Column.Key, true));
jsonBuilder.Append("\":\"");
jsonBuilder.Append(escape(row.Cells[j].Value.ToString()));
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
///
/// json特殊字符转义
///
/// old json
/// new json
private static string escape(string json)
{
string newJson = "";
if (!string.IsNullOrEmpty(json))
{
newJson = json.Replace("\\", "\\\\").Replace("\r", "\\r").Replace("\n", "\\n").Replace("\"", "\\\"");
}
return newJson;
}
}
}