132 lines
4.3 KiB
C#
Raw Normal View History

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