mirror of
https://gitee.com/ThingsGateway/ThingsGateway.git
synced 2025-10-24 04:17:08 +08:00
83 lines
2.8 KiB
C#
83 lines
2.8 KiB
C#
//------------------------------------------------------------------------------
|
||
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
|
||
// 此代码版权(除特别声明外的代码)归作者本人Diego所有
|
||
// 源代码使用协议遵循本仓库的开源协议及附加协议
|
||
// Gitee源代码仓库:https://gitee.com/diego2098/ThingsGateway
|
||
// Github源代码仓库:https://github.com/kimdiego2098/ThingsGateway
|
||
// 使用文档:https://kimdiego2098.github.io/
|
||
// QQ群:605534569
|
||
//------------------------------------------------------------------------------
|
||
|
||
// 版权归百小僧及百签科技(广东)有限公司所有。
|
||
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Microsoft.Extensions.Options;
|
||
|
||
using System.Text.Json;
|
||
|
||
namespace ThingsGateway.JsonSerialization;
|
||
|
||
/// <summary>
|
||
/// System.Text.Json 序列化提供器(默认实现)
|
||
/// </summary>
|
||
public class SystemTextJsonSerializerProvider : IJsonSerializerProvider
|
||
{
|
||
/// <summary>
|
||
/// 获取 JSON 配置选项
|
||
/// </summary>
|
||
private readonly JsonOptions _jsonOptions;
|
||
|
||
/// <summary>
|
||
/// 构造函数
|
||
/// </summary>
|
||
/// <param name="options"></param>
|
||
public SystemTextJsonSerializerProvider(IOptions<JsonOptions> options)
|
||
{
|
||
_jsonOptions = options.Value;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 反序列化字符串
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="json"></param>
|
||
/// <param name="jsonSerializerOptions"></param>
|
||
/// <returns></returns>
|
||
public T Deserialize<T>(string json, object jsonSerializerOptions = null)
|
||
{
|
||
return JsonSerializer.Deserialize<T>(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerOptions);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 反序列化字符串
|
||
/// </summary>
|
||
/// <param name="json"></param>
|
||
/// <param name="returnType"></param>
|
||
/// <param name="jsonSerializerOptions"></param>
|
||
/// <returns></returns>
|
||
public object Deserialize(string json, Type returnType, object jsonSerializerOptions = null)
|
||
{
|
||
return JsonSerializer.Deserialize(json, returnType, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerOptions);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 返回读取全局配置的 JSON 选项
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public object GetSerializerOptions()
|
||
{
|
||
return _jsonOptions?.JsonSerializerOptions;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 序列化对象
|
||
/// </summary>
|
||
/// <param name="value"></param>
|
||
/// <param name="jsonSerializerOptions"></param>
|
||
/// <returns></returns>
|
||
public string Serialize(object value, object jsonSerializerOptions = null)
|
||
{
|
||
return JsonSerializer.Serialize(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerOptions);
|
||
}
|
||
}
|