首頁 >後端開發 >C++ >自訂 JsonConverter 如何處理 JSON 反序列化中的意外枚舉值?

自訂 JsonConverter 如何處理 JSON 反序列化中的意外枚舉值?

DDD
DDD原創
2025-01-03 10:39:44353瀏覽

How Can a Custom JsonConverter Handle Unexpected Enum Values in JSON Deserialization?

透過自訂處理克服意外的JSON 枚舉值

當遇到包含超出目前枚舉定義的枚舉值的JSON資料時,可能會遇到使用Json.net 反序列化期間出現異常。要解決這個問題,建立自訂 JsonConverter 是一個有效的解決方案。

TolerantEnumConverter:一種靈活的反序列化方法

TolerantEnumConverter 是一個自訂 JsonConverter,可以靈活處理無法識別的情況枚舉值。它遵循決策樹來確定適當的回應:

  • 如果 JSON 中存在匹配的枚舉值(按字串或整數),則使用它。
  • 對於可為 null枚舉,如果未找到匹配項,則傳回空值。
  • 如果枚舉包含「未知」值,則將其用作包羅萬象的無法識別的值。
  • 如果以上都不適用,則使用枚舉的第一個值。

優點和實現

使用TolerantEnumConverter 提供了幾種:

  • JSON 枚舉的無縫序列化,無論無法識別的值如何。
  • 可依您的特定要求進行自訂處理。
  • 相容可為空和不可為空枚舉。

實作TolerantEnumConverter,只需將其作為 [JsonConverter] 屬性新增至您的枚舉類型即可。答案中提供的程式碼可以用作起點,並根據您的專案需求進行客製化。

示範和效果

提供的示範展示了 TolerantEnumConverter 如何處理各種 JSON 枚舉值,包括有效值、無效值和空值。顯示可為空和不可為空枚舉的結果,展示了轉換器在提供靈活的反序列化結果的同時防止異常的能力。

以上是自訂 JsonConverter 如何處理 JSON 反序列化中的意外枚舉值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn