I'm trying to assign a Default value to my class, when I don't have the property listed in the JSON.
This is the class I'm using to deserialize JSON
Public Class cls_horarios
Public Class Expediente
Public Property expediente_opcao_domingo As ExpedienteOpcaoDomingo
Public Property expediente_opcao_segunda As ExpedienteOpcaoSegunda
Public Property expediente_opcao_terca As ExpedienteOpcaoTerca
Public Property expediente_opcao_quarta As ExpedienteOpcaoQuarta
Public Property expediente_opcao_quinta As ExpedienteOpcaoQuinta
Public Property expediente_opcao_sexta As ExpedienteOpcaoSexta
Public Property expediente_opcao_sabado As ExpedienteOpcaoSabado
Public Property expediente_feriados As String
Public Property expediente_bloqueio_pc As String
Public Property expediente_bloqueio_tolerancia As String
End Class
Public Class ExpedienteOpcaoDomingo
Public Property isDiaUtil As Integer
Public Property hora_inicial As String
Public Property hora_final As String
End Class
Public Class ExpedienteOpcaoQuarta
Public Property isDiaUtil As Integer
Public Property hora_inicial As String
Public Property hora_final As String
End Class
Public Class ExpedienteOpcaoQuinta
Public Property isDiaUtil As Integer
Public Property hora_inicial As String
Public Property hora_final As String
End Class
Public Class ExpedienteOpcaoSegunda
Public Property isDiaUtil As Integer
Public Property hora_inicial As String
Public Property hora_final As String
End Class
Public Class ExpedienteOpcaoSexta
Public Property isDiaUtil As Integer
Public Property hora_inicial As String
Public Property hora_final As String
End Class
Public Class ExpedienteOpcaoTerca
Public Property isDiaUtil As Integer
Public Property hora_inicial As String
Public Property hora_final As String
End Class
Public Class Result
Public Property expediente As List(Of Expediente)
End Class
Public Class Root
Public Property result As Result
End Class
This is the JSON I am trying to deserialize:
{
"result": {
"expediente": [{
"expediente_opcao_domingo": {
"isDiaUtil": 0,
"hora_inicial": null,
"hora_final": null
},
"expediente_opcao_segunda": {
"isDiaUtil": 1,
"hora_inicial": "09:00",
"hora_final": "18:48"
},
"expediente_opcao_terca": {
"isDiaUtil": 1,
"hora_inicial": "09:00",
"hora_final": "18:48"
},
"expediente_opcao_quarta":
{
"isDiaUtil": 1,
"hora_inicial": "09:00",
"hora_final": "18:48"
},
"expediente_opcao_sexta": {
"isDiaUtil": 1,
"hora_inicial": "09:00",
"hora_final": "18:48"
},
"expediente_opcao_sabado": {
"isDiaUtil": 0,
"hora_inicial": null,
"hora_final": null
},
"expediente_nome": "padr\u00e3o",
"expediente_feriados": "0",
"expediente_bloqueio_pc": 0,
"expediente_bloqueio_tolerancia": "0"
}],
}
}
In this scenario, what I'm trying to do is assign a default value so that it doesn't have the properties in the JSON, the default value is set, so that it can be tested, just remove the line that is identified in the JSON
and this is the code I'm using to read the JSON
Public Sub PreencheConfiguracoesColaborador(ByVal dados As String)
'//INICIO EXPEDIENTE DO COLABORADOR
Dim horarioColab As cls_horarios.Root = JsonConvert.DeserializeObject(Of cls_horarios.Root)(dados)
expediente_colab_quantidade = 0
Try
For Each item As Expediente In horarioColab.result.expediente
expediente_colab_feriado = item.expediente_feriados
expediente_colab_bloqueio_pc = item.expediente_bloqueio_pc
expediente_colab_bloqueio_tolerancia = item.expediente_bloqueio_tolerancia
expediente_colab_domingo = item.expediente_opcao_domingo.isDiaUtil
expediente_colab_domingo_hora_entrada = FormatDateTime(item.expediente_opcao_domingo.hora_inicial.ToString, DateFormat.LongTime)
expediente_colab_domingo_hora_saida = FormatDateTime(item.expediente_opcao_domingo.hora_final.ToString, DateFormat.LongTime)
expediente_colab_segunda = item.expediente_opcao_segunda.isDiaUtil
expediente_colab_segunda_hora_entrada = FormatDateTime(item.expediente_opcao_segunda.hora_inicial.ToString, DateFormat.LongTime)
expediente_colab_segunda_hora_saida = FormatDateTime(item.expediente_opcao_segunda.hora_final.ToString, DateFormat.LongTime)
expediente_colab_terca = item.expediente_opcao_terca.isDiaUtil
expediente_colab_terca_hora_entrada = FormatDateTime(item.expediente_opcao_terca.hora_inicial.ToString, DateFormat.LongTime)
expediente_colab_terca_hora_saida = FormatDateTime(item.expediente_opcao_terca.hora_final.ToString, DateFormat.LongTime)
expediente_colab_quarta = item.expediente_opcao_quarta.isDiaUtil
expediente_colab_quarta_hora_entrada = FormatDateTime(item.expediente_opcao_quarta.hora_inicial.ToString, DateFormat.LongTime)
expediente_colab_quarta_hora_saida = FormatDateTime(item.expediente_opcao_quarta.hora_final.ToString, DateFormat.LongTime)
expediente_colab_quinta = item.expediente_opcao_quinta.isDiaUtil
expediente_colab_quinta_hora_entrada = FormatDateTime(item.expediente_opcao_quinta.hora_inicial.ToString, DateFormat.LongTime)
expediente_colab_quinta_hora_saida = FormatDateTime(item.expediente_opcao_quinta.hora_final.ToString, DateFormat.LongTime)
expediente_colab_sexta = item.expediente_opcao_sexta.isDiaUtil
expediente_colab_sexta_hora_entrada = FormatDateTime(item.expediente_opcao_sexta.hora_inicial.ToString, DateFormat.LongTime)
expediente_colab_sexta_hora_saida = FormatDateTime(item.expediente_opcao_sexta.hora_final.ToString, DateFormat.LongTime)
expediente_colab_sabado = item.expediente_opcao_sabado.isDiaUtil
expediente_colab_sabado_hora_entrada = FormatDateTime(item.expediente_opcao_sabado.hora_inicial.ToString, DateFormat.LongTime)
expediente_colab_sabado_hora_saida = FormatDateTime(item.expediente_opcao_sabado.hora_final.ToString, DateFormat.LongTime)
'expediente_colab_expediente_nome = item.expediente_nome
expediente_colab_quantidade += 1
Console.WriteLine("Feriado: " & expediente_colab_feriado & " Bloqueio Pc: " & expediente_colab_bloqueio_pc & " Bloqueio Tolerancia: " & expediente_colab_bloqueio_tolerancia & " Expediente Nome: " & expediente_colab_expediente_nome)
Next
Catch ex As Exception
writeExeption(ex, False)
Console.WriteLine("Erro Expediente: " & ex.Message)
End Try
End Sub
I have already tried the following proposed solutions right here on SO:
Default value for missing properties with JSON.net
Why when I deserialize with JSON.NET ignores my default value?
But all without success.
What I need is to set the default value when the JSON properties are missing, so I ask for everyone's help to resolve this issue.