JsonHelper

public class JsonHelper
{

/// <summary>
/// 提交页面显示的记录信息
/// </summary>
/// <param name="dt">需要转换的表格</param>
/// <returns></returns>
public static string Table2JsonArySubmit(DataTable dt)
{
if (dt.Rows.Count <= 0)
{
return "";
}
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{");
jsonBuilder.Append("\"total\":" + dt.Rows.Count + ",");
jsonBuilder.Append("\"data\":");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (dt.Columns[j].Caption == "exceptionStart" || dt.Columns[j].Caption == "startResolveExceptionStart" || dt.Columns[j].Caption == "recoveryTime")
{
string strSftDate = dt.Rows[i][j].ToString();
DateTime date = DateTime.ParseExact(strSftDate, "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.CurrentCulture);
strSftDate = date.ToString("yyyyMMdd HH:mm:ss");
jsonBuilder.Append("\"" + dt.Columns[j].Caption + "\":\"" + strSftDate + "\",");
}
else
{
jsonBuilder.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString() + "\",");
}


}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Append("\"meta\": {\"msg\": \"获取成功\",\"status\": 200}");
jsonBuilder.Append("}");

return jsonBuilder.ToString();
}

 

/// <summary>
/// 维修记录原因列表显示
/// </summary>
/// <param name="dt"></param>
/// <param name="rowCount"></param>
/// <returns></returns>
public static string TableToJsonGriddetailString(DataTable dt, int rowCount)
{
if (dt.Rows.Count <= 0)
{
return "{\"total\":" + rowCount + ",\"meta\":{\"status\":201,\"msg\":\"无数据\"}}";
}
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"total\":" + rowCount + ",");
sb.Append("\"data\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{ \"addstring\":" + "\"");
for (int j = 0; j < dt.Columns.Count - 1; j++)
{
sb.Append(dt.Rows[i][j].ToString() + ",");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}

sb.Append("\",");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (dt.Columns[j].Caption == "id")
{
sb.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString() + "\",");
}

}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("},");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("],");
sb.Append("\"meta\": {\"msg\": \"获取成功\",\"status\": 200}");
sb.Append("}");
return sb.ToString();

}
/// <summary>
/// 转换点检表界面所需的Json格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string Table2JsonAryCheckList(DataTable dt, string type)
{
if (dt.Rows.Count <= 0)
{
return "{\"total\":" + 0 + ",\"meta\":{\"status\":201,\"msg\":\"无数据\"}}";
}
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"total\":" + dt.Rows.Count + ",");
sb.Append("\"data\":[");
if (!type.Equals("equipment"))
{
sb.Append("{");
sb.Append("\"" + dt.Columns[0].Caption + "\":\"" + "ALL" + "\"},");
}

for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{ \"id\":" + i + ",");
for (int j = 0; j < dt.Columns.Count; j++)
{
sb.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString() + "\",");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("},");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("],");
sb.Append("\"meta\": {\"msg\": \"获取成功\",\"status\": 200}");
sb.Append("}");
return sb.ToString();

}
/// <summary>
/// 获取未点检设备的项目列表 ID:项目ID Project 项目名 点检状态 status 照片个数picnum
/// </summary>
/// <param name="dt"></param>
/// <param name="type"></param>
/// <returns></returns>
public static string Table2JsonAryGetProject(DataTable dt)
{
if (dt.Rows.Count <= 0)
{
return "{\"total\":" + 0 + ",\"meta\":{\"status\":201,\"msg\":\"无数据\"}}";
}
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"total\":" + dt.Rows.Count + ",");
sb.Append("\"data\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
sb.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString() + "\",");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("},");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("],");
sb.Append("\"meta\": {\"msg\": \"获取成功\",\"status\": 200}");
sb.Append("}");
return sb.ToString();

}


/// <summary>
/// dataTable转换成Json格式 JSON对应关系
/// </summary>
/// <param name="dt">需要转换AbNormallData的表格</param>
/// <returns></returns>
public static string Table2JsonAryAbNormallData(DataTable phenonmenondt, string station)
{
string json = string.Empty;
if (phenonmenondt.Rows.Count <= 0)
{
return "{\"total\":" + 0 + ",\"meta\":{\"status\":201,\"msg\":\"无数据\"}}";
}
List<Phenomenon_Model> phelist = new List<Phenomenon_Model>();
for (int i = 0; i < phenonmenondt.Rows.Count; i++)
{
List<Reason1_Model> reason1list = new List<Reason1_Model>();
Phenomenon_Model phe = new Phenomenon_Model();
phe.id = i;
phe.value3 = phenonmenondt.Rows[i][0].ToString();
DataTable reason1dt = SqlHelper.Query(string.Format(" select distinct value4 from [dbo].[EMS_Maintain] where system_type='故障原因对策' and term='error code' and value1='MSM0' and CHARINDEX(value2,'{0}')!=0 and value3='{1}'", station, phenonmenondt.Rows[i][0].ToString()));
for (int j = 0; j < reason1dt.Rows.Count; j++)
{
List<Reason2_Model> reason2list = new List<Reason2_Model>();
Reason1_Model rea1 = new Reason1_Model();
rea1.id = j;
rea1.value4 = reason1dt.Rows[j][0].ToString();
DataTable reason2dt = SqlHelper.Query(string.Format(" select distinct value5 from [dbo].[EMS_Maintain] where system_type='故障原因对策' and term='error code' and value1='MSM0' and CHARINDEX(value2,'{0}')!=0 and value3='{1}' and value4='{2}'", station, phenonmenondt.Rows[i][0].ToString(), reason1dt.Rows[j][0].ToString()));
for (int n = 0; n < reason2dt.Rows.Count; n++)
{
Reason2_Model rea2 = new Reason2_Model();
rea2.id = n;
rea2.value5 = reason2dt.Rows[n][0].ToString();
reason2list.Add(rea2);
}
rea1.Children = reason2list;
reason1list.Add(rea1);
}
phe.Children = reason1list;

phelist.Add(phe);
}

json = Newtonsoft.Json.JsonConvert.SerializeObject(phelist);
json = "{" + "\"data\":" + json + "," + "\"meta\": {\"msg\": \"获取成功\",\"status\": 200}" + "}";
return json;
}


/// <summary>
/// dataTable转换成Json格式
/// </summary>
/// <param name="dt">需要转换Phenonmenon的表格</param>
/// <returns></returns>
public static string Table2JsonAryPhenonmenon(DataTable dt)
{
int count = 0;
int i = 0;
if (dt.Rows.Count <= 0)
{
return "{\"total\":" + 0 + ",\"meta\":{\"status\":201,\"msg\":\"无数据\"}}";
}
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"data\":[");
for (i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{ \"id\":" + i + ",");
for (int j = 0; j < dt.Columns.Count; j++)
{
sb.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString() + "\",");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("},");
}
count = i;
sb.Append("{\"id\":" + count + ",\"" + dt.Columns[0].Caption + "\":\"其他\"},");
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("],");
sb.Append("\"meta\": {\"msg\": \"获取成功\",\"status\": 200}");
sb.Append("}");
return sb.ToString();
}

 

/// <summary>
/// 主页面显示的个人维修记录
/// </summary>
/// <param name="dt"></param>
/// <param name="rowCount"></param>
/// <returns></returns>
public static string TableToJsonGridString(DataTable dt, int rowCount)
{
if (dt.Rows.Count <= 0)
{
return "{\"total\":" + rowCount + ",\"meta\":{\"status\":201,\"msg\":\"无数据\"}}";
}
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"total\":" + rowCount + ",");
sb.Append("\"data\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{ \"addstring\":" + "\"");
for (int j = 1; j < dt.Columns.Count - 1; j++)
{
if (dt.Columns[j].Caption == "exceptionStart" || dt.Columns[j].Caption == "startResolveExceptionStart" || dt.Columns[j].Caption == "recoveryTime")
{
string strSftDate = dt.Rows[i][j].ToString();
DateTime date = DateTime.ParseExact(strSftDate, "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.CurrentCulture);
strSftDate = date.ToString("yyyyMMdd HH:mm:ss");
sb.Append(strSftDate + ",");
}
else { sb.Append(dt.Rows[i][j].ToString() + ","); }

}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}

sb.Append("\",");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (dt.Columns[j].Caption == "station" || dt.Columns[j].Caption == "id" || dt.Columns[j].Caption == "factory")
{
sb.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString() + "\",");
}

}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("},");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("],");
sb.Append("\"meta\": {\"msg\": \"获取成功\",\"status\": 200}");
sb.Append("}");
return sb.ToString();

}

/// <summary>
/// 将数据表格转换成Json字符串用于EUI中的数据表格
/// </summary>
/// <param name="dt"></param>
/// <param name="rowCount"></param>
/// <returns></returns>
public static string Table2Json4Grid(DataTable dt, int rowCount)
{
if (dt.Rows.Count <= 0)
{
return "{\"total\":" + rowCount + ",\"rows\":[{\"d\":\"无数据\"}]}";
}
StringBuilder sb = new StringBuilder();
string result = string.Empty;
sb.Append("{");
sb.Append("\"total\":" + rowCount + ",");
sb.Append("\"rows\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
sb.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString() + "\",");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("},");
}
if (sb.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("]");
sb.Append("}");
return sb.ToString();
}
/// <summary>
/// 将集合类转换成DataTable
/// </summary>
/// <param name="list">集合</param>
/// <returns></returns>
public static DataTable List2DataTable(IList list)
{
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name);
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
string path = tempList[13].ToString();
if (path.Contains("*"))
tempList[13] = path.Replace("*", "\\");
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
/// <summary>
/// 将DataTable转换成Json字符串用于EUI中的下拉框
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string Table2Json4Combox(DataTable dt)
{
if (dt.Rows.Count <= 0)
{
return "{d:'无数据'}";
}
StringBuilder sb = new StringBuilder();
sb.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{\"id\":\"" + dt.Rows[i][0].ToString() + "\",\"text\":\"" + dt.Rows[i][0].ToString() + "\"},");
}
if (dt.Rows.Count > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("]");
return sb.ToString();
}
/// <summary>
/// 将DataTable变成EASY UI需要的table 并需要
/// </summary>
/// <param name="dt"></param>
/// <param name="rowbegin"></param>
/// <param name="rowend"></param>
/// <returns></returns>
public static DataTable GetPagedTable(DataTable dt, int rowbegin, int rowend)//PageIndex表示第几页,PageSize表示每页的记录数
{
//if (PageIndex == 0)
// return dt;//0页代表每页数据,直接返回

DataTable newdt = dt.Copy();
newdt.Clear();//copy dt的框架

//int rowbegin = (PageIndex - 1) * PageSize;
//int rowend = PageIndex * PageSize;

if (rowbegin > dt.Rows.Count)
return newdt;//源数据记录数小于等于要显示的记录,直接返回dt

if (rowend > dt.Rows.Count)
rowend = dt.Rows.Count;
for (int i = rowbegin; i <= rowend; i++)
{
DataRow newdr = newdt.NewRow();
DataRow dr = dt.Rows[i - 1];
foreach (DataColumn column in dt.Columns)
{
newdr[column.ColumnName] = dr[column.ColumnName];
}
newdt.Rows.Add(newdr);
}
return newdt;
}
/// <summary>
/// dataTable转换成Json格式
/// </summary>
/// <param name="dt">需要转换的表格</param>
/// <returns></returns>
public static string Table2JsonAry(DataTable dt)
{
if (dt.Rows.Count <= 0)
{
return "";
}
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(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString().Trim());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
if (dt.Rows.Count > 0)
{
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
}
jsonBuilder.Append("]");

return jsonBuilder.ToString();
}


/// <summary>
/// 获取当前时间
/// </summary>
/// <param name="lmDate"></param>
/// <param name="lmTime"></param>
public static void GetDateTime(ref int lmDate, ref int lmTime)
{
string[] Now = DateTime.Now.ToString("yyyyMMdd-HHmmss").Split('-');
lmDate = Convert.ToInt32(Now[0]);
lmTime = Convert.ToInt32(Now[1]);
}

public static string GetData4Unit(string unity)
{
string result = "0";
if (!string.IsNullOrEmpty(unity))
{
string[] unityAry = unity.Split(',');
StringBuilder sb = new StringBuilder();
sb.Append("[");
for (int i = 0; i < unityAry.Length; i++)
{
sb.Append("{\"id\":\"" + unityAry[i] + "\",\"text\":\"" + unityAry[i] + "\"},");
}
if (unityAry.Length > 0)
{
sb.Remove(sb.ToString().LastIndexOf(','), 1);
}
sb.Append("]");
return sb.ToString();
}
return result;
}

/// <summary>
/// json转换为匿名对象
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="json">json</param>
/// <returns>实体类</returns>
public static T GetEntity<T>(string json, T type)
{
try
{
T en = JsonConvert.DeserializeAnonymousType<T>(json, type);
return en;
}
catch (Exception ex)
{

throw ex;
}
}
}

JSON 更小 更快 更易解析。

JSON是一种数据格式。

数据在键值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

 

例子:

  1. {
  2. "errcode": 0,
  3. "errmsg": "ok",
  4. "tagname": "乒乓球协会",
  5. "userlist": [
  6. {
  7. "userid": "zhangsan",
  8. "name": "李四"
  9. }
  10. ],
  11. "partylist": [2]
  12. }

JObject obj = Newtonsoft.Json.Linq.JObject.Parse(content);

 

obj["userlist"].count();获取userlist里面的个数

mode.name = obj["userlist"][0]["name"].ToString();
mode.tagname = obj["tagname"].ToString();
mode.userid = obj["userlist"][0]["userid"].ToString();

 

JSON对象就是一个对象Object 最大的特点可以调用里面的属性,JSON就是字符串是带引号的。 序列化就是把对象变成字符串,而反序列化就是把字符串变成对象。

posted @ 2019-11-15 09:47  最爱吃汤圆27  阅读(315)  评论(0编辑  收藏  举报