博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#实体类对象修改日志记录
阅读量:4971 次
发布时间:2019-06-12

本文共 2534 字,大约阅读时间需要 8 分钟。

public static class LogParser{    ///     /// 对象转为JSON    ///     ///     /// 
public static string Parse(Object model) { if (model == null) { return "null"; } Type type = model.GetType(); if (type.IsPrimitive)//基本类型 { if (model is Boolean) { return model.ToString().ToLower(); } return model.ToString(); } else if (model is string || model is DateTime || model is Enum || model is ObjectId)//字符串 { return $"\"{model.ToString()}\""; } else if (model is IDictionary dictionary)//Dictionary字段 { return ParseDictionary(dictionary); } else if (model is IEnumerable enumerable)//可遍历的集合 { return ParseEnumerable(enumerable); } else //实体对象 { return ParseObject(model); } } /// /// 字典类型 /// /// ///
private static string ParseDictionary(IDictionary dic) { StringBuilder jsonBuffer = new StringBuilder("{"); List
lstKV = new List
(); foreach (var key in dic.Keys) { lstKV.Add($"{Parse(key)}:{Parse(dic[key])}"); } jsonBuffer.AppendJoin(",", lstKV); jsonBuffer.Append("}"); return jsonBuffer.ToString(); } ///
/// 集合类型 /// ///
///
private static string ParseEnumerable(IEnumerable enumerable) { StringBuilder jsonBuffer = new StringBuilder("["); List
lstItems = new List
(); foreach (var item in enumerable) { lstItems.Add(Parse(item)); } jsonBuffer.AppendJoin(",", lstItems); jsonBuffer.Append("]"); return jsonBuffer.ToString(); } ///
/// 对象类型 /// ///
///
private static string ParseObject(Object obj) { StringBuilder jsonBuffer = new StringBuilder("{"); List
lstKV = new List
(); foreach (var prop in obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy)) { string value = Parse(prop.GetValue(obj)); string name = prop.GetCustomAttribute
()?.Description ?? prop.Name; lstKV.Add($"\"{name}\":{value}"); } jsonBuffer.AppendJoin(",", lstKV); jsonBuffer.Append("}"); return jsonBuffer.ToString(); }}

转载于:https://www.cnblogs.com/AlvinLee/p/10192011.html

你可能感兴趣的文章
个人作业-最长英语链
查看>>
JMeter-性能测试之报表设定的注意事项
查看>>
1066-堆排序
查看>>
仿面包旅行个人中心下拉顶部背景放大高斯模糊效果
查看>>
强大的css3
查看>>
C#委托与事件
查看>>
Scala系列:注解
查看>>
Linux kernel 发布 5.0-rc1 版本
查看>>
[转帖]创建文件或修改文件时间 touch
查看>>
【转帖】Linux mount 域控权限的共享目录
查看>>
NSURLSession的简单使用
查看>>
python征程3.0(python对象)
查看>>
jQuery 库 - 特性
查看>>
搜索好题2
查看>>
3 Selenium Python 数据库及文件
查看>>
Compounding绑定属性
查看>>
【转】jsp 和 servlet的联系和区别
查看>>
mvc4 用NPOI导出Excel
查看>>
格雷码与二进制码互相转换
查看>>
数码管的封装实验 --- verilog
查看>>