System.Text.Json
from https://www.ruyut.com/2022/08/dotnet-system-text-json.html
基本使用方式
JSON 範例檔案:
範例物件:
將物件內容變為 JSON 格式(序列化)
讀取 JSON 內容到物件中(反序列化)
JSON 陣列、清單的轉換方式
將物件內容變為 JSON 格式(序列化)
讀取 JSON 內容到物件中(反序列化)
自訂屬性名稱
如果物件中的屬性名稱和 JSON 需要不一樣時,可以使用 JsonPropertyName 來自訂名稱
輸出 JSON 支援中文
筆者在測試時如果來源 JSON 內容有中文可以被正常讀取,但是物件內的中文在輸出時會變成 Unicode 字元...
研究了一下才發現原來一切都是為了安全啊!包含常用的 HTML 字元都會被轉掉,例如 > < &,如果要正確輸出為中文和那些符號則要加上 UnsafeRelaxedJsonEscaping
忽略欄位
在類別中使用 JsonIgnore 可以忽略該欄位
調整輸出 JSON 的順序
在將物件序列化為 JSON 的時候預設是依照物件中的順序由上到下輸出,如果要自訂順序可以使用 JsonPropertyOrder,經過測試順序如下
- 負數優先(越小越優先)
- 0 就是依照預設(和沒有使用 JsonPropertyOrder 的優先程度一樣,從上到下)
- 大於 0 的數就是負數、預設、0 排完後依照數字順序由小到大
格式化輸出 JSON (增加換行)
預設在輸出 JSON 時內容會省略多餘的換行和空白,以最短的形式輸出 JSON 內容。如果想要以比較方便人類閱讀、包含換行的方式輸出的話可以使用下面的選項:
不區分大小寫
System.Text.Json 預設會區分大小寫,在上面的範例中 JSON Key 的部分都是使用大寫作示範,如果大小寫不符合時資料就不會被塞進去,調整為不區分大小寫的方式如下:
忽略結尾逗號
預設不允許結尾逗號,如果在 JSON 文字中遇到結尾逗號就會拋出錯誤
忽略結尾逗號:
忽略註解
預設不允許註解,如果在 JSON 文字中遇到註解(// 和 /* */)就會拋出錯誤
忽略 JSON 註解:
調整最大深度
System.Text.Json 在 JSON 的最大深度預設為 64 (在 ASP.NET Core 中預設為 32)
留言
張貼留言