【发布时间】:2021-08-31 21:32:51
【问题描述】:
我想用 System.Text.Json 对序列化的属性进行排序。实际上,我想首先放置一个属性 (ID)。
关注我的控制台应用程序。
class Program
{
static void Main(string[] args)
{
Student student = new Student()
{
Name = "Robert",
Id = Guid.NewGuid(),
LastName = "Alv",
Check = "Ok"
};
var resultJson = System.Text.Json.JsonSerializer.Serialize(student);
Console.WriteLine(resultJson);
Console.ReadLine();
}
class BaseClass1
{
public Guid Id { get; set; }
}
class BaseClass2 : BaseClass1
{
}
class People : BaseClass2
{
public string Name { get; set; }
public string LastName { get; set; }
public string Check { get; set; }
}
class Student : BaseClass2
{
public string Name { get; set; }
public string LastName { get; set; }
public string Check { get; set; }
}
}
上面程序的结果是 {"Name":"Robert","LastName":"Alv","Check":"Ok","Id":"4bd17c0c-f610-414d-8f6c-49ca8957ef3f" }
但我想要下面的结果
{"Id":"4bd17c0c-f610-414d-8f6c-49ca8957ef3f","Name":"Robert","LastName":"Alv","Check":"Ok"}
【问题讨论】:
-
属性并没有真正的顺序......在 C# 和 JSON 中都没有。 (确实有structlayoutattribute,但它并不真正适用于文本序列化)。欢迎edit 澄清您的目标到底是什么,以及您希望用这种方法解决什么实际问题。
-
你好@AlexeiLevenkov!实际上我需要它到我的 Rest Api。我想在 Json 结果中首先返回属性“ID”。但是由于许多原因,我的应用程序中需要带有“ID”的基类。
-
如果您对您声称的内容感兴趣,您可能已经发现重复的 stackoverflow.com/questions/3330989/…... 但您需要基于标题/标签的自动映射器答案 - 所以现在有了明确的目标有人可能会想出并回答这个问题(我也很确定这是不可能的,因为 automapper 不知道 JSON 序列化)
-
谢谢@AlexeiLevenkov!根据我的问题,如果我删除继承,属性顺序将正常工作。我已经检查了线程,它没有解决我的问题。
-
您应该将edit 与真正的minimal reproducible example 一起放入问题中。 IE。目前该问题声称与 automapper 有某种关系,但没有在代码中使用映射结果的痕迹。也没有任何
People类型的定义...
标签: c# json asp.net-core system.text.json