aquí está mi versión (en VB) si alguien lo necesita. También maneja anulable booleana
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
que comenzó esta basado en @John aquí: how to get newtonsoft to deserialize yes and no to boolean
Hola Sólo se maneja si mi valor es "1", lo que si paso 2 en lugar de 1, que va también se convierten en false –
código sólo lo lógica que desea. El código de muestra debería hacer que sea bastante obvio cómo hacer lo que estás pidiendo. –
Tengo que devolver un error de estado del modelo en caso de que el usuario pase dos. Cómo manejar eso –