在JSON 反序列化期間忽略未知的枚舉值
問題:
使用Json 進行JSON 反序列化。當在 JSON 資料中遇到未知的枚舉值時,net 可能會引發異常。當基於目前文件建立枚舉,但第三方 API 後來添加新的枚舉值時,就會發生這種情況。
解決方案:自訂 JsonConverter
解決此問題,可以使用自訂的 JsonConverter。它的工作原理如下:
程式碼實作:
class TolerantEnumConverter : JsonConverter { ... (Implementation from the provided answer) }
用法:
應用枚舉類型的[JsonConverter(JsonJson (TolerantEnumConverter))]屬性在反序列化過程中使用自訂轉換器:
[JsonConverter(typeof(TolerantEnumConverter))] enum Status { ... (Enum values) }
範例示範:
以下程式碼片段示範如何使用具有不同枚舉值和JSON 的TolerantEnumConverter輸入:
string json = @" { ... (JSON data with valid and invalid enum values) }"; Foo foo = JsonConvert.DeserializeObject<Foo>(json); foreach (PropertyInfo prop in typeof(Foo).GetProperties()) { object val = prop.GetValue(foo, null); Console.WriteLine(prop.Name + ": " + (val == null ? "(null)" : val.ToString())); }
輸出:
控制台輸出顯示TolerantEnumConverter 如何處理未知枚舉值,包括將值設為「(null)」、「(null)」、「 Unknown” ,或使用枚舉的第一個值。
以上是如何使用 Json.net 在 JSON 反序列化過程中處理未知的枚舉值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!