Files
lserp_cs_5.0/插件库/CommonLib/utils/JsonUtil.cs
T
2026-07-10 15:25:05 +08:00

110 lines
4.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Web.Script.Serialization;
using System.Collections;
namespace CommonLib {
/// <summary>
/// JSON转换帮助类
/// </summary>
public static class JsonUtil {
#region Json字符串转换为DataTable 实例方法
public static DataTable JsonToDataTable(String json) {
DataTable dt = ToDataTable(json);
return dt;
}
#endregion
#region DataTable 转换为Json 字符串
/// <summary>
/// DataTable 对象 转换为Json 字符串
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string ToJson(this DataTable dt) {
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
ArrayList arrayList = new ArrayList();
foreach (DataRow dataRow in dt.Rows) {
Dictionary<string, object> dictionary = new Dictionary<string, object>(); //实例化一个参数集合
foreach (DataColumn dataColumn in dt.Columns) {
dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());
}
arrayList.Add(dictionary); //ArrayList集合中添加键值
}
return javaScriptSerializer.Serialize(arrayList); //返回一个json字符串
}
#endregion
#region Json 字符串 转换为 DataTable数据集合
/// <summary>
/// Json 字符串 转换为 DataTable数据集合
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static DataTable ToDataTable(this string json) {
DataTable dataTable = new DataTable(); //实例化
DataTable result;
try {
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
if (arrayList.Count > 0) {
foreach (Dictionary<string, object> dictionary in arrayList) {
if (dictionary.Keys.Count<string>() == 0) {
result = dataTable;
return result;
}
if (dataTable.Columns.Count == 0) {
foreach (string current in dictionary.Keys) {
dataTable.Columns.Add(current, dictionary[current].GetType());
}
}
DataRow dataRow = dataTable.NewRow();
foreach (string current in dictionary.Keys) {
dataRow[current] = dictionary[current];
}
dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
}
}
}
catch {
}
result = dataTable;
return result;
}
#endregion
#region 转换为string字符串类型
/// <summary>
/// 转换为string字符串类型
/// </summary>
/// <param name="s">获取需要转换的值</param>
/// <param name="format">需要格式化的位数</param>
/// <returns>返回一个新的字符串</returns>
public static string ToStr(this object s, string format = "") {
string result = "";
try {
if (format == "") {
result = s.ToString();
}
else {
result = string.Format("{0:" + format + "}", s);
}
}
catch {
}
return result;
}
#endregion
}
}