Dưới đây là phiên bản của tôi (trong vb) nếu có ai cần nó. Nó cũng xử lý nullable 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
tôi bắt đầu này dựa trên @ John ở đây: how to get newtonsoft to deserialize yes and no to boolean
Hi Nó chỉ xử lý nếu giá trị của tôi là "1" nếu tôi vượt qua 2 thay vì 1, Nó cũng sẽ được chuyển thành false –
Chỉ cần mã bất kỳ logic nào bạn muốn. Mã mẫu nên làm cho nó khá rõ ràng làm thế nào để làm những gì bạn đang yêu cầu. –
Tôi đã trả về lỗi trạng thái mô hình trong trường hợp người dùng vượt qua hai. Làm thế nào để xử lý rằng –