如何使用 System.Text.Json 对序列化字段进行排序
How to sort serialized fields using System.Text.Json
我想用 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"}
阅读@AlexeiLevenkov 指出的线程whosebug.com/questions/3330989 后。我意识到使用 NewtonSoft.Json 更容易。所以我将属性 [JsonProperty(Order = -2)] 设置为“ID” 属性 并将 System.Text.Json.JsonSerializer.Serialize(student) 交换为 JsonConvert.SerializeObject(student);它工作正常!
下面是更新的代码。
class Program
{
static void Main(string[] args)
{
Student student = new Student()
{
Name = "Robert",
Id = Guid.NewGuid(),
LastName = "Alv",
Check = "Ok"
};
var resultJson = JsonConvert.SerializeObject(student);
Console.WriteLine(resultJson);
Console.ReadLine();
}
class BaseClass1
{
[JsonProperty(Order = -2)]
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; }
}
}
无法使用 System.Text.Json(目前)。据说在“某天”发布的作品中。
如您所见,Newtonsoft.Json 是可能的。
我想用 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"}
阅读@AlexeiLevenkov 指出的线程whosebug.com/questions/3330989 后。我意识到使用 NewtonSoft.Json 更容易。所以我将属性 [JsonProperty(Order = -2)] 设置为“ID” 属性 并将 System.Text.Json.JsonSerializer.Serialize(student) 交换为 JsonConvert.SerializeObject(student);它工作正常!
下面是更新的代码。
class Program
{
static void Main(string[] args)
{
Student student = new Student()
{
Name = "Robert",
Id = Guid.NewGuid(),
LastName = "Alv",
Check = "Ok"
};
var resultJson = JsonConvert.SerializeObject(student);
Console.WriteLine(resultJson);
Console.ReadLine();
}
class BaseClass1
{
[JsonProperty(Order = -2)]
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; }
}
}
无法使用 System.Text.Json(目前)。据说在“某天”发布的作品中。
如您所见,Newtonsoft.Json 是可能的。