[英]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.