|  | @@ -0,0 +1,87 @@
 | 
	
		
			
				|  |  | +using Newtonsoft.Json.Serialization;
 | 
	
		
			
				|  |  | +using System.Text.Json;
 | 
	
		
			
				|  |  | +using System.Text.Json.Serialization;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +namespace OASystem.API.OAMethodLib
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    #region 日期格式转换
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public class DateTimeJsonConverter : System.Text.Json.Serialization.JsonConverter<DateTime>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        private readonly string Format;
 | 
	
		
			
				|  |  | +        public DateTimeJsonConverter(string format)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Format = format;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        public override void Write(Utf8JsonWriter writer, DateTime date, JsonSerializerOptions options)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            writer.WriteStringValue(date.ToString(Format));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return DateTime.ParseExact(reader.GetString(), Format, null);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    #region null值转空字符串 NewtonsoftJson
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public class NullToEmptyStringResolver : CamelCasePropertyNamesContractResolver
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        /// 创建属性
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <param name="type">类型</param>
 | 
	
		
			
				|  |  | +        /// <param name="memberSerialization">序列化成员</param>
 | 
	
		
			
				|  |  | +        /// <returns></returns>
 | 
	
		
			
				|  |  | +        protected override IList<Newtonsoft.Json.Serialization.JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return type.GetProperties().Select(c =>
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                var jsonProperty = base.CreateProperty(c, memberSerialization);
 | 
	
		
			
				|  |  | +                jsonProperty.ValueProvider = new NullToEmptyStringValueProvider(c);
 | 
	
		
			
				|  |  | +                return jsonProperty;
 | 
	
		
			
				|  |  | +            }).ToList();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public class NullToEmptyStringValueProvider : IValueProvider
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        private readonly PropertyInfo _memberInfo;
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        /// 构造函数
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <param name="memberInfo"></param>
 | 
	
		
			
				|  |  | +        public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            _memberInfo = memberInfo;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        /// 获取Value
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <param name="target"></param>
 | 
	
		
			
				|  |  | +        /// <returns></returns>
 | 
	
		
			
				|  |  | +        public object GetValue(object target)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var result = _memberInfo.GetValue(target);
 | 
	
		
			
				|  |  | +            if (_memberInfo.PropertyType == typeof(string) && result == null)
 | 
	
		
			
				|  |  | +                result = string.Empty;
 | 
	
		
			
				|  |  | +            return result;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        /// 设置Value
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <param name="target"></param>
 | 
	
		
			
				|  |  | +        /// <param name="value"></param>
 | 
	
		
			
				|  |  | +        public void SetValue(object target, object value)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            _memberInfo.SetValue(target, value);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |