Json过滤
var settings = new JsonSerializerSettings {
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = ShouldSerializeContractResolver.Instance
};
return JsonConvert.SerializeObject(
new ResponseInfo<T>()
{
code = RESULT_CODE_SUCCESS,
message = RESULT_MSG_SUCCESS,
data = data,
traceId = LogicCallContext.GetIISRequestId()
}, settings);
过滤器
internal class ShouldSerializeContractResolver : DefaultContractResolver
{
internal static ShouldSerializeContractResolver Instance = new ShouldSerializeContractResolver();
private static List<string> _ignoreProperties = new List<string> {"inusersysno", "inusername", "editusersysno", "editusername", "editdatestr", "ismydata" };
private ShouldSerializeContractResolver()
{
}
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var property = base.CreateProperty(member, memberSerialization);
if (member.MemberType == MemberTypes.Property)
{
// 需忽略的属性列表
var isIngoreProperty = _ignoreProperties.Contains(property.PropertyName.ToLower());
property.ShouldSerialize = instance =>
{
var shouldSerialize = false;
if (!isIngoreProperty)
{
var prop = instance.GetType().GetProperty(member.Name);
// 忽略只读属性
if (prop.CanWrite)
{
var value = prop.GetValue(instance, null);
// 忽略空字符串
if (property.PropertyType == typeof(string))
{
shouldSerialize = !string.IsNullOrWhiteSpace(value as string);
}
// 忽略空列表
else if (typeof(IEnumerable).IsAssignableFrom(property.PropertyType))
{
var enumerable = value as IEnumerable;
shouldSerialize = enumerable != null ? enumerable.GetEnumerator().MoveNext() : false;
}
else
{
shouldSerialize = value != null;
}
}
}
return shouldSerialize;
};
}
else
{
property.ShouldSerialize = i => false;
}
return property;
}
}
努力到无能为力,拼搏到感动自己
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构