[英]Use serializer within ASP.NET Core MVC controller?
ASP.NET Core MVC 序列化從我的Microsoft.AspNetCore.Mvc.ControllerBase
控制器方法返回的響應。
因此,以下內容會將MyDTO
對象序列化為 JSON:
[Produces("application/json")]
[HttpGet]
public MyDTO test()
{
return new MyDTO();
}
但是,我想在方法本身中使用完全相同的序列化程序。 那可能嗎? 就像是
[Produces("application/json")]
[HttpGet]
public MyDTO test()
{
var result = new MyDTO();
string serialized = this.<SOMETHING GOES HERE>(result);
Console.WriteLine($"I'm about to return {serialized}");
return result;
}
重要的是它是相同的序列化程序,包括堆棧中設置的任何選項。
不要認為這是可能的,因為它隱藏在IActionResultExecutor<JsonResult>
。 默認將是SystemTextJsonResultExecutor
但在使用時可能會在啟動時被覆蓋,例如.AddNewtonsoftJson(...)
...
您可以在startup.cs
顯式設置 Json 格式選項,然后在需要序列化的其他地方使用相同的選項。 這樣所有的序列化都將以完全相同的方式完成。
例如,如果您使用的是JsonSerializer
:
public static class JsonSerializerExtensions
{
public static JsonOptions ConfigureJsonOptions(this JsonOptions options)
{
// your configuration
options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.WriteAsString;
return options;
}
}
startup.cs
services
.AddControllers()
.AddJsonOptions(options => options.ConfigureJsonOptions());
Conroller.cs
string serialized =JsonSerializer.Serialize(new MyDTO(), options: new JsonOptions().ConfigureJsonOptions().JsonSerializerOptions);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.