132 lines
4.3 KiB
C#
132 lines
4.3 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Data;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using Newtonsoft.Json.Converters;
|
|||
|
using Newtonsoft.Json;
|
|||
|
|
|||
|
namespace DH.RBAC.Utility.Other
|
|||
|
{
|
|||
|
public static class JsonHelper
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 对象序列化成JSON字符串。
|
|||
|
/// </summary>
|
|||
|
/// <param name="obj">序列化对象</param>
|
|||
|
/// <param name="ignoreProperties">设置需要忽略的属性</param>
|
|||
|
/// <returns></returns>
|
|||
|
public static string ToJson(this object obj)
|
|||
|
{
|
|||
|
if (obj == null)
|
|||
|
return string.Empty;
|
|||
|
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
|
|||
|
timeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
|
|||
|
return JsonConvert.SerializeObject(obj, timeConverter);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// JSON字符串序列化成对象。
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">对象类型</typeparam>
|
|||
|
/// <param name="json">JSON字符串</param>
|
|||
|
/// <returns></returns>
|
|||
|
public static T ToObject<T>(this string json)
|
|||
|
{
|
|||
|
//var setting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
|||
|
return json == null ? default(T) : JsonConvert.DeserializeObject<T>(json);//, setting);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// JSON字符串序列化成集合。
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">集合类型</typeparam>
|
|||
|
/// <param name="json">JSON字符串</param>
|
|||
|
/// <returns></returns>
|
|||
|
public static List<T> ToList<T>(this string json)
|
|||
|
{
|
|||
|
//var setting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
|||
|
return json == null ? null : JsonConvert.DeserializeObject<List<T>>(json);//, setting);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// JSON字符串序列化成DataTable。
|
|||
|
/// </summary>
|
|||
|
/// <param name="json">JSON字符串</param>
|
|||
|
/// <returns></returns>
|
|||
|
public static DataTable ToTable(this string json)
|
|||
|
{
|
|||
|
return json == null ? null : JsonConvert.DeserializeObject<DataTable>(json);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 将JSON字符串反序列化成对象
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <param name="baseEntity"></param>
|
|||
|
/// <param name="strJson"></param>
|
|||
|
/// <returns></returns>
|
|||
|
public static T Json2Obj<T>(T baseEntity, string strJson)
|
|||
|
{
|
|||
|
return JsonConvert.DeserializeAnonymousType(strJson, baseEntity);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 将对象转换层JSON字符串
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <param name="data"></param>
|
|||
|
/// <returns></returns>
|
|||
|
public static string Obj2Json<T>(T data)
|
|||
|
{
|
|||
|
return JsonConvert.SerializeObject(data);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public static List<T> JsonToList<T>(string strJson)
|
|||
|
{
|
|||
|
T[] list = JsonConvert.DeserializeObject<T[]>(strJson);
|
|||
|
return list.ToList();
|
|||
|
}
|
|||
|
|
|||
|
public static T Json2Obj<T>(string strJson)
|
|||
|
{
|
|||
|
return JsonConvert.DeserializeObject<T>(strJson);
|
|||
|
}
|
|||
|
|
|||
|
public static DataTable ToDataTable(this string json)
|
|||
|
{
|
|||
|
return json.ToTable();
|
|||
|
}
|
|||
|
|
|||
|
public static string FormatJson(this string json)
|
|||
|
{
|
|||
|
//格式化json字符串
|
|||
|
JsonSerializer serializer = new JsonSerializer();
|
|||
|
TextReader tr = new StringReader(json);
|
|||
|
JsonTextReader jtr = new JsonTextReader(tr);
|
|||
|
object obj = serializer.Deserialize(jtr);
|
|||
|
if (obj != null)
|
|||
|
{
|
|||
|
StringWriter textWriter = new StringWriter();
|
|||
|
JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
|
|||
|
{
|
|||
|
Formatting = Formatting.Indented,
|
|||
|
Indentation = 4,
|
|||
|
IndentChar = ' '
|
|||
|
};
|
|||
|
serializer.Serialize(jsonWriter, obj);
|
|||
|
return textWriter.ToString();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return json;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|