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