zoukankan      html  css  js  c++  java
  • 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就是字符串是带引号的。 序列化就是把对象变成字符串,而反序列化就是把字符串变成对象。

  • 相关阅读:
    [ZT].Net中動態建立和調用WebServices的方法
    英文符号读法整理
    [ZT]SQL Server 的事务日志意外增大或充满的处理方法
    [ZT]Asp.net發布至英文服务器后出现的日期格式问题
    [ZT]如何取得客户端的Windows登录用户名?
    囧!一个盗版用户和微软客服的通话记录
    [轉帖]x.509证书在WCF中的应用(CS篇)
    [原創]關於VS“無法辨認的逸出序列”的錯誤分析和解決方法
    【原創】文件系統目錄文件快速複製轉移工具
    SQL2000/SQL2005導入導出存儲過程圖解
  • 原文地址:https://www.cnblogs.com/cdjbolg/p/11864469.html
Copyright © 2011-2022 走看看