簡體   English   中英

替換 ASP.NET Core 3.1 JSON 實現系統范圍

[英]Replace ASP.NET Core 3.1 JSON implementation system wide

最近我決定從 ASP.NET Core 2.2 到 ASP.NET Core 3.1,並沒有預料到所有的重大變化; 我的應用程序的幾乎每個部分都損壞了,因為大多數部分都依賴於 JSON。

為了防止未來與 JSON 相關的問題,是否可以創建一個接口,模仿當前的 Json 實現並覆蓋默認行為。

我的大部分代碼都依賴於這兩種方法:

Json.Serialize() // used in my razor 
Json() // returns an IActionResult

用例:一個 Razor 頁面: Json.Serialize Doc

<script>
   var myModel = @Html.Raw(Json.Serialize(Model))
</script>

用例:控制器

public async Task<IActionResult> AjaxGetRoleDetails(int id)
{
        return Json(await GetUserRoles(id));
}

以下是我想要的方法,當分別調用上述方法時。

JsonConvert.SerializeObject() // override Json.Serialize
Content(JsonConvert.SerializeObject(), new MediaTypeHeaderValue("application/json")) // override Json()

如何覆蓋系統實現,暫時調用我自己的實現,然后在 ASP.NET 確定 JSON 實現時輕松恢復到系統的實現。

ASP.NET Core 的默認 JSON 序列化程序現在是System.Text.Json

所以你可以遷移到使用它。

或者,如果您想在 ASP.NET Core 3.0 及更高版本中繼續使用 Newtonsoft.Json,您可以更新您的 Startup.ConfigureServices 以調用 AddNewtonsoftJson。

如果你需要像以前一樣的東西,例如,在 ASP.NET Core 2.2 中,那么你可以使用默認的合同解析器。 例如

services.AddControllers().AddNewtonsoftJson(options =>
{
    options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM