Files
tnb.server/common/Tnb.Common/Security/JsonHelper.cs
2023-05-31 10:19:05 +08:00

147 lines
4.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using JNPF.JsonSerialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace JNPF.Common.Security;
/// <summary>
/// JsonHelper
/// 版 本V3.4.2
/// 版 权拓通智联科技有限公司http://www.tuotong-tech.com
/// 作 者JNPF开发平台组.
/// </summary>
public static class JsonHelper
{
/// <summary>
/// 序列化提供器.
/// </summary>
public static IJsonSerializerProvider _jsonSerializer = App.GetService(typeof(NewtonsoftJsonSerializerProvider), App.RootServices) as IJsonSerializerProvider;
/// <summary>
/// Object 转 JSON字符串.
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string ToJsonString(this object obj)
{
return obj == null ? string.Empty : _jsonSerializer.Serialize(obj);
}
/// <summary>
/// Object 转 JSON字符串.
/// </summary>
/// <param name="obj"></param>
/// <param name="jsonSerializerOptions">序列化规则.</param>
/// <returns></returns>
public static string ToJsonString(this object obj, object jsonSerializerOptions = default)
{
return obj == null ? string.Empty : _jsonSerializer.Serialize(obj, jsonSerializerOptions);
}
/// <summary>
/// JSON 字符串转 Object.
/// </summary>
/// <typeparam name="T">动态类型.</typeparam>
/// <param name="json">对象.</param>
/// <returns></returns>
public static T ToObject<T>(this string json)
{
return _jsonSerializer.Deserialize<T>(json);
}
/// <summary>
/// JSON 字符串转 Object.
/// </summary>
/// <typeparam name="T">动态类型.</typeparam>
/// <param name="json">对象.</param>
/// <returns></returns>
public static T ToObjectOld<T>(this string json)
{
return _ = JsonConvert.DeserializeObject<T>(json) ?? default(T);
}
/// <summary>
/// JSON 字符串转 Object.
/// </summary>
/// <typeparam name="T">动态类型.</typeparam>
/// <param name="json">对象.</param>
/// <param name="jsonSerializerOptions">序列化规则.</param>
/// <returns></returns>
public static T ToObject<T>(this string json, object jsonSerializerOptions = default)
{
return _jsonSerializer.Deserialize<T>(json, jsonSerializerOptions);
}
/// <summary>
/// Object 转 对象.
/// </summary>
/// <typeparam name="T">动态类型.</typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T ToObject<T>(this object json)
{
return ToJsonString(json).ToObject<T>();
}
/// <summary>
/// Object 转 对象.
/// </summary>
/// <typeparam name="T">动态类型.</typeparam>
/// <param name="json"></param>
/// <param name="jsonSerializerOptions">序列化规则.</param>
/// <returns></returns>
public static T ToObject<T>(this object json, object jsonSerializerOptions = default)
{
return ToJsonString(json, jsonSerializerOptions).ToObject<T>(jsonSerializerOptions);
}
/// <summary>
/// 字符串转动态类型List.
/// </summary>
/// <typeparam name="T">动态类型.</typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static List<T> ToList<T>(this string json)
{
return _jsonSerializer.Deserialize<List<T>>(json);
}
/// <summary>
/// 字符串转动态类型List.
/// </summary>
/// <typeparam name="T">动态类型.</typeparam>
/// <param name="json"></param>
/// <param name="jsonSerializerOptions">序列化规则.</param>
/// <returns></returns>
public static List<T> ToList<T>(this string json, object jsonSerializerOptions = default)
{
return _jsonSerializer.Deserialize<List<T>>(json, jsonSerializerOptions);
}
/// <summary>
/// 字符串 转 JObject.
/// </summary>
/// <param name="json">字符串.</param>
/// <returns></returns>
public static JObject ToObject(this string json)
{
return json == null ? JObject.Parse("{}") : JObject.Parse(json.Replace("&nbsp;", string.Empty));
}
/// <summary>
/// 字符串 转 JSON.
/// </summary>
/// <param name="json">字符串.</param>
/// <returns></returns>
public static string PraseToJson(string json)
{
JsonSerializer s = new JsonSerializer();
JsonReader reader = new JsonTextReader(new StringReader(json));
object jsonObject = s.Deserialize(reader);
StringWriter sWriter = new StringWriter();
JsonWriter writer = new JsonTextWriter(sWriter);
writer.Formatting = Formatting.Indented;
s.Serialize(writer, jsonObject);
return sWriter.ToString();
}
}