c# – 如何控制JSON输出中的属性顺序?

前端之家收集整理的这篇文章主要介绍了c# – 如何控制JSON输出中的属性顺序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为DataItem的类,它有三个属性:Id,DataValue和CreatedDateTime.属性在类中按从上到下的顺序定义.这也是我希望在 JSON导出中看到属性的顺序.问题是DataItem对象和JSON导出中的属性按字母顺序排序.虽然这种格式在技术上没有任何问题,但这是一个可读性问题.如何控制JSON导出中的属性顺序?

我检查了实例化的dataItem,并按字母顺序列出了属性.这没关系,我理解不按字母顺序排序属性的潜在可用性问题.

  1. public static List<DataItem>GetAllDataItems()
  2. {
  3. List<DataItem> dataItems = new List<DataItem>();
  4.  
  5. sqlConnection conn = NetduinoDb.GetConnection();
  6.  
  7. sqlCommand cmd = conn.CreateCommand();
  8.  
  9. cmd.CommandText = "Select Id,DataValue,CreatedDateTime from XXX";
  10. cmd.CommandType = CommandType.Text;
  11.  
  12. conn.Open();
  13.  
  14. sqlDataReader reader = cmd.ExecuteReader();
  15.  
  16. while (reader.Read())
  17. {
  18. DataItem dataItem = new DataItem
  19. {
  20. Id = reader["Id"].ToString(),DataValue = reader["DataValue"].ToString(),CreatedDateTime = reader["CreatedDateTime"].ToString()
  21. };
  22.  
  23. dataItems.Add(dataItem);
  24. }
  25.  
  26. reader.Close();
  27. conn.Close();
  28.  
  29.  
  30. return dataItems.ToList();
  31. }

方法在我的服务实现中,并返回DataItems列表.我想我需要在这里做点什么,但不知道是什么或怎么做.

  1. public List<DataItem> GetCollection()
  2. {
  3. return DataRetriever.GetAllDataItems();
  4. }

解决方法

DataContractJsonSerializer考虑具有Order属性的DataMember属性.您可以使用它来告诉序列化程序您要序列化的成员的顺序.
  1. [DataContract]
  2. class DataItem
  3. {
  4. [DataMember(Order = 1)]
  5. public string Id { get; set; }
  6.  
  7. [DataMember(Order = 2)]
  8. public string DataValue { get; set; }
  9.  
  10. [DataMember(Order = 3)]
  11. public string CreatedDateTime { get; set; }
  12. }

根据需要调整顺序,但这通常是在WCF中完成的.

猜你在找的C#相关文章