zoukankan      html  css  js  c++  java
  • JSON 对象互转

    以前写过用反射,转换,后来觉得有很大漏洞,最近发现有人写过这个help类,所以保存下来

    public class JSONHelper
    {
    /// <summary>
    /// DataRow转JSON
    /// </summary>
    /// <param name="row">DataRow</param>
    /// <returns>JSON格式对象</returns>
    public static object DataRowToJSON(DataRow row)
    {
    Dictionary<string, object> dataList = new Dictionary<string, object>();
    foreach (DataColumn column in row.Table.Columns)
    {
    dataList.Add(column.ColumnName, row[column]);
    }

    return ObjectToJSON(dataList);
    }

    /// <summary>
    /// DataRow转对象,泛型方法
    /// </summary>
    /// <typeparam name="T">类型</typeparam>
    /// <param name="row">DataRow</param>
    /// <returns>JSON格式对象</returns>
    public static T DataRowToObject<T>(DataRow row)
    {
    return JSONToObject<T>(DataRowToJSON(row).ToString());
    }

    /// <summary>
    /// DataRow转对象,泛型方法
    /// </summary>
    /// <typeparam name="T">类型</typeparam>
    /// <param name="table">DataTable</param>
    /// <returns>JSON格式对象</returns>
    public static List<T> DataTableToList<T>(DataTable table)
    {
    return JSONToList<T>(DataTableToJSON(table).ToString());
    }
    /// <summary>
    /// DataRow转对象,泛型方法
    /// </summary>
    /// <typeparam name="T">类型</typeparam>
    /// <param name="jsonText">JSON文本</param>
    /// <returns>JSON格式对象</returns>
    public static List<T> JSONToList<T>(string jsonText)
    {
    return JSONToObject<List<T>>(jsonText);
    }

    /// <summary>
    /// 对象转JSON
    /// </summary>
    /// <param name="obj">对象</param>
    /// <returns>JSON格式的字符串</returns>
    public static object ObjectToJSON(object obj)
    {
    try
    {
    JsonSerializerSettings jset = new JsonSerializerSettings();
    jset.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    jset.Converters.Add(new IsoDateTimeConverter { DateTimeFormat = "yyyy'/'MM'/'dd' 'HH':'mm':'ss" });
    return JsonConvert.SerializeObject(obj, jset);
    }
    catch (Exception ex)
    {
    throw new Exception("JSONHelper.ObjectToJSON(): " + ex.Message);
    }
    }
    /// <summary>
    /// 数据表转JSON
    /// </summary>
    /// <param name="dataTable">数据表</param>
    /// <returns>JSON字符串</returns>
    public static object DataTableToJSON(DataTable dataTable)
    {
    return ObjectToJSON(dataTable);
    }

    /// <summary>
    /// JSON文本转对象,泛型方法
    /// </summary>
    /// <typeparam name="T">类型</typeparam>
    /// <param name="jsonText">JSON文本</param>
    /// <returns>指定类型的对象</returns>
    public static T JSONToObject<T>(string jsonText)
    {
    try
    {
    return JsonConvert.DeserializeObject<T>(jsonText.Replace("undefined", "null"));
    }
    catch (Exception ex)
    {
    throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
    }
    }

    /// <summary>
    /// JSON文本转对象
    /// </summary>
    /// <param name="jsonText">JSON文本</param>
    /// <param name="type">类型</param>
    /// <returns>指定类型的对象</returns>
    public static object JSONToObject(string jsonText, Type type)
    {
    try
    {
    return JsonConvert.DeserializeObject(jsonText.Replace("undefined", "null"), type);
    }
    catch (Exception ex)
    {
    throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
    }
    }


    /// <summary>
    /// [{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]
    /// </summary>
    /// <param name="strJson">Json字符串</param>
    /// <returns>DataTable</returns>
    public static DataTable JSONToDataTable(string strJson)
    {
    return JsonConvert.DeserializeObject(strJson, typeof(DataTable)) as DataTable;
    }
    }

  • 相关阅读:
    IsBadReadPtr|IsBadWritePtr调试崩溃
    VSCode配置python调试环境
    Visual Studio Code 如何编写运行 C、C++ 程序?
    使用nginx做反向代理
    Win10环境下配置VScode的C++编译环境
    关于java 获取 html select标签 下拉框 option 文本内容 隐藏域
    【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27】
    VS Code 配置 C/C++ 环境
    改变你一生的编辑器:VSCode使用总结
    CentOS7,安装Tomcat8.5、JDK1.8,并设置开机启动(Linux CentOS Tomcat、JDK+Tomcat、Tomcat开机自启动)
  • 原文地址:https://www.cnblogs.com/JohnnyBao/p/4496865.html
Copyright © 2011-2022 走看看