c# – 如何控制JSON输出中的属性顺序?
发布时间:2020-12-15 18:29:59 所属栏目:百科 来源:网络整理
导读:我有一个名为DataItem的类,它有三个属性:Id,DataValue和CreatedDateTime.属性在类中按从上到下的顺序定义.这也是我希望在 JSON导出中看到属性的顺序.问题是DataItem对象和JSON导出中的属性按字母顺序排序.虽然这种格式在技术上没有任何问题,但这是一个可读
我有一个名为DataItem的类,它有三个属性:Id,DataValue和CreatedDateTime.属性在类中按从上到下的顺序定义.这也是我希望在
JSON导出中看到属性的顺序.问题是DataItem对象和JSON导出中的属性按字母顺序排序.虽然这种格式在技术上没有任何问题,但这是一个可读性问题.如何控制JSON导出中的属性顺序?
我检查了实例化的dataItem,并按字母顺序列出了属性.这没关系,我理解不按字母顺序排序属性的潜在可用性问题. public static List<DataItem>GetAllDataItems() { List<DataItem> dataItems = new List<DataItem>(); SqlConnection conn = NetduinoDb.GetConnection(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "Select Id,DataValue,CreatedDateTime from XXX"; cmd.CommandType = CommandType.Text; conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { DataItem dataItem = new DataItem { Id = reader["Id"].ToString(),DataValue = reader["DataValue"].ToString(),CreatedDateTime = reader["CreatedDateTime"].ToString() }; dataItems.Add(dataItem); } reader.Close(); conn.Close(); return dataItems.ToList(); } 此方法在我的服务实现中,并返回DataItems列表.我想我需要在这里做点什么,但不知道是什么或怎么做. public List<DataItem> GetCollection() { return DataRetriever.GetAllDataItems(); } 解决方法
DataContractJsonSerializer考虑具有Order属性的DataMember属性.您可以使用它来告诉序列化程序您要序列化的成员的顺序.
[DataContract] class DataItem { [DataMember(Order = 1)] public string Id { get; set; } [DataMember(Order = 2)] public string DataValue { get; set; } [DataMember(Order = 3)] public string CreatedDateTime { get; set; } } 根据需要调整顺序,但这通常是在WCF中完成的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |