Oto moja wersja (VB), jeśli ktoś potrzebuje. Obsługuje również pustych Boolean
Imports Newtonsoft.Json
Public Class MyBooleanConverter
Inherits JsonConverter
Public Overrides ReadOnly Property CanWrite As Boolean
Get
Return True
End Get
End Property
Public Overrides Sub WriteJson(writer As JsonWriter, value As Object, serializer As JsonSerializer)
Dim boolVal As Boolean = value
writer.WriteValue(If(boolVal, 1, 0))
End Sub
Public Overrides Function ReadJson(reader As JsonReader, objectType As Type, existingValue As Object, serializer As JsonSerializer) As Object
Dim value = reader.Value
If IsNothing(value) OrElse String.IsNullOrWhiteSpace(value.ToString()) OrElse "0" = value Then
Return False
End If
If 0 = String.Compare("yes", value, True) OrElse 0 = String.Compare("true", value, True) Then
Return True
End If
Return False
End Function
Public Overrides Function CanConvert(objectType As Type) As Boolean
Return objectType = GetType(Boolean) OrElse objectType = GetType(Boolean?) 'OrElse objectType = GetType(String)
End Function
End Class
zacząłem to na podstawie @John tutaj: how to get newtonsoft to deserialize yes and no to boolean
Cześć To tylko uchwyty jeśli wartość wynosi „1” co jeśli mijam 2 zamiast 1, Otrzymasz również konwertowane do fałszywego –
kodu tylko tego co logika chcesz. Przykładowy kod powinien sprawić, że będzie oczywiste, jak wykonać to, o co prosisz. –
Muszę zwrócić błąd stanu modelu w przypadku, gdy użytkownik przejdzie dwa. Jak sobie z tym poradzić? –