c# – 如何控制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中完成的.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...