gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:50:36 25 4
gpt4 key购买 nike

我有一个名为 DataItem 的类,它具有三个属性:Id、DataValue 和 CreatedDateTime。属性是按从上到下的顺序在类中定义的。这也是我希望在 JSON 导出中查看属性的顺序。问题是 DataItem 对象和 JSON 导出中的属性按字母顺序排序。尽管这种格式在技术上没有任何问题,但这是一个可读性问题。如何控制 JSON 导出中属性的顺序?

我检查了实例化的数据项,属性按字母顺序列出。没关系,我理解不按字母顺序对属性进行排序的潜在可用性问题。

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();
}

此方法在我的服务实现中并返回数据项列表。我想我需要在这里做点什么,但不确定做什么或怎么做。

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 中的做法。

关于c# - 如何控制 JSON 输出中属性的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com