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;
    }
    }

  • 相关阅读:
    Python Revisited Day 13 (正则表达式)
    Python Revisited Day 06 (面向对象程序设计)
    Python Revisited (变量)
    Python Revisited Day 05(模块)
    Python Revisited Day 04 (控制结构与函数)
    Python Revisited Day 03 (组合数据类型)
    Numpy
    Python Revisited Day 01
    Python3使用openpyxl读写Excel文件
    Python3操作YAML文件
  • 原文地址:https://www.cnblogs.com/JohnnyBao/p/4496865.html
Copyright © 2011-2022 走看看