/**************************************************
* 版权所有:
* 文 件 名: JSONHelper.cs
* 文件描述:
* 类型说明: JSONHelper JSON帮助类
* 授权声明:
* 版本历史:
* v1.0.0 季健国 2010-07-03 新建
***************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Web.Script.Serialization;
namespace Ant.Service.Common
{
public class JsonHelper111
{
///
/// 对象[集合|嵌套对象]转JSON
///
///
/// 对象
/// 标准JSON字符串
/// 格式:{"key":"value","key":"value","key":"value"},{}
public static string ToJSON(T obj)
{
try
{
var js = new JavaScriptSerializer();
js.RecursionLimit = 1;
return js.Serialize(obj);
}
catch (Exception ex)
{
return ex.Message;
}
}
///
/// 转Grid 标准Json字符串
///
///
///
///
/// {"page":1,"total":1,"records":1,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"}] }
public static string ToGridJson(T obj)
{
var jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"page\":1,\"total\":" + "1" + ",\"records\":1,\"rows\"");
jsonBuilder.Append(":[");
jsonBuilder.Append(ToJSON(obj));
jsonBuilder.Append("]}");
return jsonBuilder.ToString();
}
///
/// 转Grid 标准字符串
///
///
/// The list.
///
/// {"page":1,"total":0,"records":3,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"},{}] }
public static string ArrayToGridJson(List list)
{
var jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"page\":1,\"total\":" + (list.Count / 10) + ",\"records\":" + list.Count + ",\"rows\"");
jsonBuilder.Append(":");
jsonBuilder.Append(ToJSON(list));
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
///
/// 转Grid 标准字符串
///
///
///
///
/// {"page":1,"total":0,"records":3,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"},{}] }
public static string ObjListToGridJson(object[] list, int currentPage, int totalPages, int rows)
{
var jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + rows +
",\"rows\"");
jsonBuilder.Append(":");
jsonBuilder.Append(ToJSON(list));
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
///
/// Arrays to grid json without caption.
///
/// 数据二维数组
/// 属性或者标题一维数组,顺序应与数据数组完全相同,且与第二维长度相等或者大于
/// 当前页面
/// 每页行数
/// 总页数,允许为空,为空时忽略掉此参数
///
public static string ArrayToGridJsonWithoutCaption(object[] DataArray, string[] CaptionArray, int currentPage,
int rows, int TatolPageNumber)
{
var jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + TatolPageNumber + ",\"records\":" + rows +
",\"rows\"");
jsonBuilder.Append(":[");
int i = 0, j = 0;
foreach (object obj in DataArray)
{
if (0 < i)
jsonBuilder.Append(",");
var SubArray = (object[])obj;
jsonBuilder.Append("{");
foreach (object subobj in SubArray)
{
if (0 >= j)
jsonBuilder.Append("\"" + CaptionArray[j] + "\":\"" + subobj + "\"");
else
jsonBuilder.Append(",\"" + CaptionArray[j] + "\":\"" + subobj + "\"");
++j;
}
jsonBuilder.Append("}");
j = 0;
++i;
}
jsonBuilder.Append("]}");
return jsonBuilder.ToString();
}
///
/// 转TreeGrid 标准字符串
///
///
///
///
/// {"page":1,"total":0,"records":3,"rows":[{"id":"1",cell:["testName","jayjay","123"]}] }
public static string IlistToGridJson(IList list)
{
var jsonBuilder = new StringBuilder();
//jsonBuilder.Append("{\"page\":1,\"total\":" + (list.Count / 10) + ",\"records\":" + list.Count + ",\"rows\"");
//jsonBuilder.Append(":[");
//foreach (var t in list)
//{
// var tt = t as RolePermission;
// if (tt != null)
// {
// jsonBuilder.Append("{");
// Permission p = tt.Permission;
// //权限Id
// jsonBuilder.AppendFormat("id:{0},", p.Id);
// jsonBuilder.Append("cell:[");
// //权限name
// jsonBuilder.Append("'" + p._Name + "',");
// //权限url
// jsonBuilder.Append("'" + p._Page + "',");
// //
// jsonBuilder.Append(0+",");
// jsonBuilder.Append("null,");
// jsonBuilder.Append(false+",");
// jsonBuilder.Append(false);
// jsonBuilder.Append("]}");
// jsonBuilder.Append(",");
// }
//}
//jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
//jsonBuilder.Append("]");
//jsonBuilder.Append("}");
//json 生成
//jsonBuilder.Append("{total:1,page:1,records:6,");
//jsonBuilder.Append("rows:[");
//jsonBuilder.Append("{id:1,cell:['Tabelle','1a2',0,null,false,false]},");
//jsonBuilder.Append("{id:2,cell:['Tabelle','1a2',0,null,false,false]}");
//jsonBuilder.Append("]}");
//xml 生成
//jsonBuilder.Append("");
//jsonBuilder.Append("");
//jsonBuilder.Append("");
//jsonBuilder.Append("1 | ");
//jsonBuilder.Append("系统管理 | ");
//jsonBuilder.Append(" | ");
//jsonBuilder.Append("0 | ");
//jsonBuilder.Append("1 | ");
//jsonBuilder.Append("14 | ");
//jsonBuilder.Append("false | ");
//jsonBuilder.Append("false | ");
//jsonBuilder.Append("
");
//jsonBuilder.Append("");
//jsonBuilder.Append("2 | ");
//jsonBuilder.Append("部门维护 | ");
//jsonBuilder.Append("SysManage/SysDepList.aspx | ");
//jsonBuilder.Append("1 | ");
//jsonBuilder.Append("2 | ");
//jsonBuilder.Append("3 | ");
//jsonBuilder.Append("true | ");
//jsonBuilder.Append("true | ");
//jsonBuilder.Append("
");
//foreach (T t in list)
//{
// var tt = t as RolePermission;
// if (null != tt)
// {
// jsonBuilder.Append("");
// jsonBuilder.Append("1 | ");
// jsonBuilder.Append(""+tt.Permission._Name+" | ");
// if (string.IsNullOrEmpty(tt.Permission._Page))
// {
// jsonBuilder.Append(" | ");
// jsonBuilder.Append("0 | ");
// jsonBuilder.Append("1 | ");
// jsonBuilder.Append("14 | ");
// jsonBuilder.Append("false | ");
// jsonBuilder.Append("false | ");
// }
// else
// {
// jsonBuilder.Append("SysManage/SysDepList.aspx | ");
// jsonBuilder.Append("0 | ");
// jsonBuilder.Append("1 | ");
// jsonBuilder.Append("14 | ");
// jsonBuilder.Append("false | ");
// jsonBuilder.Append("false | ");
// }
// jsonBuilder.Append("
");
// }
//}
//jsonBuilder.Append("");
return jsonBuilder.ToString();
}
/////
///// 【角色维护】中的【权限列表】 to Gridjson 数据
/////
/////
/////
/////
/////
/////
//public static string powList2Gridjson(object[] list, int currentPage, int totalPages, int rows)
//{
// var jsonBuilder = new StringBuilder();
// jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + list.Length +
// ",\"rows\"");
// jsonBuilder.Append(":[");
// foreach (object rowData in list)
// {
// if (null != rowData)
// {
// var p = (Permission) rowData;
// jsonBuilder.Append("{");
// jsonBuilder.Append("\"Id\":\"" + p.Id + "\","); //[ID]绑定
// jsonBuilder.Append("\"_Name\":\"" + p._Name + "\","); //[Name]绑定
// jsonBuilder.Append("\"_Page\":\"" + p._Page + "\","); //[page]绑定
// //判断【该页是否有此功能】
// if ("0" != p._Read.ToString())
// {
// jsonBuilder.Append("\"_Read\":\"" +
// "" + "\","); //[_read]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Read\":\"" +
// "" + "\","); //[_read]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Write.ToString())
// {
// jsonBuilder.Append("\"_Write\":\"" +
// "" + "\","); //[_write]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Write\":\"" +
// "" + "\","); //[_write]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Delete.ToString())
// {
// jsonBuilder.Append("\"_Delete\":\"" +
// "" + "\","); //[_delte]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Delete\":\"" + "" + "\","); //[_delete]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Update.ToString())
// {
// jsonBuilder.Append("\"_Update\":\"" +
// "" + "\","); //[_update]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Update\":\"" + "" + "\","); //[_update]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Cancel.ToString())
// {
// jsonBuilder.Append("\"_Cancel\":\"" +
// "" + "\","); //[_cancel解除]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Cancel\":\"" + "" + "\","); //[_cancel解除]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Audit.ToString())
// {
// jsonBuilder.Append("\"_Audit\":\"" +
// "" + "\""); //[_audit 审核]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Audit\":\"" + "" + "\""); //[_audit 审核]绑定
// }
// jsonBuilder.Append("}");
// jsonBuilder.Append(",");
// }
// }
// jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
// jsonBuilder.Append("]}");
// return jsonBuilder.ToString();
//}
////------------------------------------------------------------------------
/////
///// 【角色维护】中的【权限列表】 to Gridjson 数据
/////
/////
/////
/////
/////
/////
//public static string powList2GridjsonForView(object[] list, int currentPage, int totalPages, int rows)
//{
// var jsonBuilder = new StringBuilder();
// jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + list.Length +
// ",\"rows\"");
// jsonBuilder.Append(":[");
// foreach (object rowData in list)
// {
// if (null != rowData)
// {
// var p = (Permission) rowData;
// jsonBuilder.Append("{");
// jsonBuilder.Append("\"Id\":\"" + p.Id + "\","); //[ID]绑定
// jsonBuilder.Append("\"_Name\":\"" + p._Name + "\","); //[Name]绑定
// jsonBuilder.Append("\"_Page\":\"" + p._Page + "\","); //[page]绑定
// //判断【该页是否有此功能】
// if ("0" != p._Read.ToString())
// {
// jsonBuilder.Append("\"_Read\":\"" +
// "" +
// "\","); //[_read]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Read\":\"" +
// "" + "\","); //[_read]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Write.ToString())
// {
// jsonBuilder.Append("\"_Write\":\"" +
// "" + "\","); //[_write]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Write\":\"" +
// "" + "\","); //[_write]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Delete.ToString())
// {
// jsonBuilder.Append("\"_Delete\":\"" +
// "" + "\","); //[_delte]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Delete\":\"" + "" + "\","); //[_delete]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Update.ToString())
// {
// jsonBuilder.Append("\"_Update\":\"" +
// "" + "\","); //[_update]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Update\":\"" + "" + "\","); //[_update]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Cancel.ToString())
// {
// jsonBuilder.Append("\"_Cancel\":\"" +
// "" + "\","); //[_cancel解除]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Cancel\":\"" + "" + "\","); //[_cancel解除]绑定
// }
// //判断【该页是否有此功能】
// if ("0" != p._Audit.ToString())
// {
// jsonBuilder.Append("\"_Audit\":\"" +
// "" + "\""); //[_audit 审核]绑定
// }
// else
// {
// jsonBuilder.Append("\"_Audit\":\"" + "" + "\""); //[_audit 审核]绑定
// }
// jsonBuilder.Append("}");
// jsonBuilder.Append(",");
// }
// }
// jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
// jsonBuilder.Append("]}");
// return jsonBuilder.ToString();
//}
//------------------------------------------------------------------------
///
/// JSON转对象
///
///
/// The json.
/// obj
public static T ToObject(string json)
{
try
{
var js = new JavaScriptSerializer();
return js.Deserialize(json);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// JSON转对象
///
///
/// The j.
/// obj[]对象集合
public static object[] JSONToArray(string j)
{
try
{
var js = new JavaScriptSerializer();
return js.DeserializeObject(j) as object[];
}
catch (Exception ex)
{
throw ex;
}
}
#region DataSet 转 JSON
///
/// DataTable转换成Json格式
///
/// DataTable
/// JSON字符串
/// 格式如:{"rows":[{"id":0,"cell":["address":"china","depName":"testName","user":"jayjay","depId":"123"]},....]}
public static string DataTable2Json(DataTable dt)
{
var jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"rows\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\"");
jsonBuilder.Append(",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
///
/// DataSet 转 JSON
///
/// DataSet
/// JSON字符串
public static string DataSet2Json(DataSet ds)
{
var strJson = new StringBuilder();
foreach (DataTable dt in ds.Tables)
{
strJson.Append("{\"");
strJson.Append(dt.TableName);
strJson.Append("\":");
strJson.Append(DataTable2Json(dt));
strJson.Append("}");
}
return strJson.ToString();
}
///
/// DataTable转GridJson
///
/// DataTable
/// Grid json字符串
public static string DTToGridJson(DataTable dt)
{
var jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"page\":1,\"total\":" + (dt.Rows.Count / 10) + ",\"records\":" + dt.Rows.Count +
",\"rows\"");
jsonBuilder.Append(":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\"");
jsonBuilder.Append(",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
public static string DTToGridJson(DataTable dt, int currentPage, int totalPages, int pageRecorder)
{
var jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" +
Math.Ceiling(totalPages / double.Parse(pageRecorder.ToString())) + ",\"records\":" +
totalPages +
",\"rows\"");
jsonBuilder.Append(":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\"");
jsonBuilder.Append(",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
if (',' == jsonBuilder[jsonBuilder.Length - 1])
{
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
}
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
#endregion
}
}