[ASP.NET Core] 關於System.Text.Json的兩三事

關於System.Text.Json的兩三事

原本只是想寫個從前端Post資料給後端API,結果後端收到的資料怎麼拿怎麼null

經過一番確認後,果然又是因為System.Text.Json,

筆記一下曾經遇到這個蠢事,

順帶一提,這次使用的是.NetCore 3.1


.NetCore從3.0開始就脫離了Json.Net,改用自家的System.Text.Json

跟Json.Net相比效能有明顯的提昇,但是仍然有許多功能不完善


1. 先來看看Code,簡單的一段程式碼,左邊的request很乾脆的拿到null,原因是System.Text.Json不支援字串轉int

2. Microsoft Docs 上面其實就有說明了跟Json.Net相比,不支援的功能以及解決辦法,不過在這之前倒是花了點時間才意識到是System.Text.Json的問題

3. 若想改回用 Json.Net,可以按照這邊的步驟

  • add nuget package "Microsoft.AspNetCore.Mvc.NewtonsoftJson"
  • startup 的 ConfigureServices,在對應位置加上 "AddNewtonsoftJson"

4. 除了Model Binding外,若有使用到來自微軟的Nuget Package,也遇到了跟Json Parse有關的問題,不妨可以先看看是不是System.Text.Json導致的


去年在用 .NetCore 3.0時,有在之前介紹的nuget packege "Microsoft.AspNet.WebApi.Client"使用上遇到同樣是 System.Text.Json 解析型別的問題,

加上了 AddNewtonsoftJson 也一樣沒有作用,最後只好自己把相同的功能刻出來了......