And*_*uin 10 .net c# json system.text.json
我正在将一个项目从 .NET 5 迁移Newtonsoft.Json到System.Text.Json.NET 5。
我有课:
abstract class Car
{
public string Name { get; set; } = "Default Car Name";
}
class Tesla : Car
{
public string TeslaEngineName { get; set; } = "My Tesla Engine";
}
Run Code Online (Sandbox Code Playgroud)
我试过:
var cars = new List<Car>
{
new Tesla(),
new Tesla(),
new Tesla()
};
var json = JsonSerializer.Serialize(cars);
Console.WriteLine(json);
Run Code Online (Sandbox Code Playgroud)
输出是:
[
{"Name":"Default Car Name"},
{"Name":"Default Car Name"},
{"Name":"Default Car Name"}
]
Run Code Online (Sandbox Code Playgroud)
其中失去了我的财产:TeslaEngineName。
那么如何序列化具有所有属性的派生对象呢?
这是 System.Text.Json 的设计功能,请参阅此处了解更多详细信息。您的选择是:
继续使用 JSON.Net
使用其中一种解决方法,在这种情况下,请List<object>在序列化时使用 a 或强制转换列表。例如:
var json = JsonSerializer.Serialize(cars.Cast<object>());
^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
此选项的缺点是它仍然不会序列化派生类的任何嵌套属性。
| 归档时间: |
|
| 查看次数: |
5693 次 |
| 最近记录: |