Ish*_*mas 5 c# serialization json .net-core asp.net-core
在ASP.NET Core Web API返回以下 DTO 类时,我想忽略 null 属性(我使用的System.Text.Json;是 ,而不是Newtonsoft.Json)。我想在中间件(在 Startup 类中)而不是在控制器中执行此操作。这是 C# 类:
public class VehicleOutput
{
public int VehicleId { get; set; }
public string Owner { get; set; }
public Car Car { get; set; }
public Truck Truck { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是JSON我想返回的(我不想显示事实上"car": null是否Car为空,并且相同Truck):
[
{
"vehicleId": 1,
"owner": "ABS",
"car":
{
"carId": 123,
"model": "Foo"
}
},
{
"vehicleId": 2,
"owner": "ABS",
"truck":
{
"truckId": 123,
"model": "Bar"
}
}
]
Run Code Online (Sandbox Code Playgroud)
我能够通过在Controller. 有用!:
[HttpGet]
public async Task<ActionResult> GetVehicles()
{
var vehiclesOutput = await _vehicleService.GetVehicles();
var options = new JsonSerializerOptions
{
IgnoreNullValues = true,
WriteIndented = true
};
return Ok(JsonSerializer.Serialize(vehiclesOutput, options));
}
Run Code Online (Sandbox Code Playgroud)
但我不想每次返VehicleOutput课时都重复这段代码。所以我想在中间件中做到这一点。这就是我得到的:
services.AddControllers()
.AddJsonOptions(opt =>
{
opt.JsonSerializerOptions.IgnoreNullValues = true;
});
Run Code Online (Sandbox Code Playgroud)
有用!它会忽略 JSON 中的 null 属性,但它会对我在 API 中返回的每个对象执行此操作。我只想为特定类别添加此选项(例如VehicleOutput)。你怎么能在Startup课堂上这样做呢?
请记住...我没有使用Newtonsoft.Json. 我正在使用System.Text.Json;并且我想坚持使用它(如果可能的话)
| 归档时间: |
|
| 查看次数: |
2588 次 |
| 最近记录: |