新增数据字段拦截器,json序列化解析器

This commit is contained in:
2023-09-26 17:07:40 +08:00
parent 4199736bc7
commit 764a77456e
16 changed files with 314 additions and 4 deletions
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Newtonsoft.Json.Serialization;
namespace ZR.Infrastructure.Resolver;
public class JsonPropertyContractResolver : CamelCasePropertyNamesContractResolver
{
private HashSet<string> _propertySet;
public JsonPropertyContractResolver(IEnumerable<string> propertyNames)
{
if (propertyNames != null)
{
_propertySet = new HashSet<string>(propertyNames, StringComparer.Ordinal);
}
}
// protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
// {
// var list = base.CreateProperties(type, memberSerialization).ToList();
// var resList = list
// .Where(a => !this._lstInclude.Contains(a.PropertyName))
// .ToList();
// return resList;
// // .FindAll(p => _lstInclude.Contains(p.PropertyName));
// }
protected override List<MemberInfo> GetSerializableMembers(Type objectType)
{
List<MemberInfo> serializableMembers = null;
var allMembers = base.GetSerializableMembers(objectType);
if (_propertySet != null && _propertySet.Count > 0)
{
serializableMembers = allMembers.Where(m => !_propertySet.Contains(m.Name)).ToList();
}
return serializableMembers != null && serializableMembers.Count > 0 ? serializableMembers : allMembers;
}
}