json - 动态设置 JSON 结果的 JsonPropertyOrder
问题描述
我正在使用 angular9 和 .net MVC API 开发一个小型应用程序。
从角度前端,用户可以从下拉列表中选择表名。选择表名后,它会显示该表中可用的所有列。用户可以选择他/她感兴趣的列名以及这些列的排序顺序。这将保存在数据库表中。例如,用户选择 Emp_Name(排序顺序 2)、Emp_Id(排序顺序 1)和 Emp_Address(排序顺序 3)
我想返回一个带有选定列名作为属性的 json,这些属性应该具有与用户偏好相同的排序顺序。JsonPropertyOrder 不能使用,因为属性的顺序是动态的并且可能会改变。
下面是我的代码,它返回 JSON,属性顺序为 Emp_Name、Emp_Id 和 Emp_Address。
var model = ConvertDataTable<Employee>(dt);
var serilaizeJson = JsonConvert.SerializeObject(model , Formatting.None,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
.
.
.
private static List<T> ConvertDataTable<T>(DataTable dt)
{
List<T> data = new List<T>();
foreach (DataRow row in dt.Rows)
{
T item = GetItem<T>(row);
data.Add(item);
}
return data;
}
private static T GetItem<T>(DataRow dr)
{
Type temp = typeof(T);
T obj = Activator.CreateInstance<T>();
foreach (DataColumn column in dr.Table.Columns)
{
foreach (PropertyInfo pro in temp.GetProperties())
{
if (pro.Name == column.ColumnName)
//if(dr[column.ColumnName] != null && dr[column.ColumnName] != DBNull.Value)
pro.SetValue(obj, dr[column.ColumnName].ToString(), null);
else
continue;
}
}
return obj;
}
我希望订单是 Emp_Id、Emp_Name 和 Emp_Address
解决方案
推荐阅读
- python - 对具有相同名称的行进行分组的最佳方法
- debian-packaging - 使用 apt 在 debian 上安装 deb 文件时,依赖包的版本字段如何影响包安装,如 >=、<= 等?
- ios - 即使设备被锁定(密码),也可以从 Siri 快捷方式打开应用程序
- java - 为什么这个三元语句与这个相同的 if / else 语句产生不同的结果?
- html - 动画完成后有没有办法导航到下一页?
- mysql - 如何使 2 列一起工作以使其独一无二?
- linux - 如何安装 git lfs
- spring-boot - 服务端连接git时spring cloud config客户端无法连接服务端
- javascript - 使用 axios 从 vue 上传 XML 文件到 asp .net core
- wordpress - 自定义帖子类型的类别模板