VbNet · Console
Imports System
Imports System.Collections.Generic
Imports Newtonsoft.Json
Imports System.ComponentModel
' https://stackoverflow.com/questions/76782154/set-default-value-when-deserializing-json-missing-properties-in-json
Public Class cls_horarios
Public Class Expediente
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property expediente_opcao_domingo As ExpedienteOpcao = New ExpedienteOpcao()
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property expediente_opcao_segunda As ExpedienteOpcao = New ExpedienteOpcao()
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property expediente_opcao_terca As ExpedienteOpcao = New ExpedienteOpcao()
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property expediente_opcao_quarta As ExpedienteOpcao = New ExpedienteOpcao()
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property expediente_opcao_quinta As ExpedienteOpcao = New ExpedienteOpcao()
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property expediente_opcao_sexta As ExpedienteOpcao = New ExpedienteOpcao()
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property expediente_opcao_sabado As ExpedienteOpcao = New ExpedienteOpcao()
Public Property expediente_feriados As String
Public Property expediente_bloqueio_pc As String
Public Property expediente_bloqueio_tolerancia As String
End Class
Public Class ExpedienteOpcao
Public Property isDiaUtil As Integer
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
Public Property hora_inicial As String = ""
<JsonProperty(NullValueHandling := NullValueHandling.Ignore)> _
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
End Class
Public Module TestClass
Public Sub PreencheConfiguracoesColaborador(ByVal dados As String)
'//INICIO EXPEDIENTE DO COLABORADOR
Dim horarioColab As cls_horarios.Root = JsonConvert.DeserializeObject(Of cls_horarios.Root)(dados)
For Each item As cls_horarios.Expediente In horarioColab.result.expediente
dim expediente_colab_feriado = item.expediente_feriados
dim expediente_colab_bloqueio_pc = item.expediente_bloqueio_pc
dim expediente_colab_bloqueio_tolerancia = item.expediente_bloqueio_tolerancia
dim expediente_colab_domingo = item.expediente_opcao_domingo.isDiaUtil
dim expediente_colab_domingo_hora_entrada = item.expediente_opcao_domingo.hora_inicial.ToString
dim expediente_colab_domingo_hora_saida = item.expediente_opcao_domingo.hora_final.ToString
dim expediente_colab_segunda = item.expediente_opcao_segunda.isDiaUtil
dim expediente_colab_segunda_hora_entrada = item.expediente_opcao_segunda.hora_inicial.ToString
dim expediente_colab_segunda_hora_saida = item.expediente_opcao_segunda.hora_final.ToString
dim expediente_colab_terca = item.expediente_opcao_terca.isDiaUtil
dim expediente_colab_terca_hora_entrada = item.expediente_opcao_terca.hora_inicial.ToString
dim expediente_colab_terca_hora_saida = item.expediente_opcao_terca.hora_final.ToString
dim expediente_colab_quarta = item.expediente_opcao_quarta.isDiaUtil
dim expediente_colab_quarta_hora_entrada = item.expediente_opcao_quarta.hora_inicial.ToString
dim expediente_colab_quarta_hora_saida = item.expediente_opcao_quarta.hora_final.ToString
dim expediente_colab_quinta = item.expediente_opcao_quinta.isDiaUtil
dim expediente_colab_quinta_hora_entrada = item.expediente_opcao_quinta.hora_inicial.ToString
dim expediente_colab_quinta_hora_saida = item.expediente_opcao_quinta.hora_final.ToString
dim expediente_colab_sexta = item.expediente_opcao_sexta.isDiaUtil
dim expediente_colab_sexta_hora_entrada = item.expediente_opcao_sexta.hora_inicial.ToString
dim expediente_colab_sexta_hora_saida = item.expediente_opcao_sexta.hora_final.ToString
dim expediente_colab_sabado = item.expediente_opcao_sabado.isDiaUtil
dim expediente_colab_sabado_hora_entrada = item.expediente_opcao_sabado.hora_inicial.ToString
dim expediente_colab_sabado_hora_saida = item.expediente_opcao_sabado.hora_final.ToString
Console.WriteLine("Dia Util Quinta: " & expediente_colab_quinta & " Hora Inicial Quinta: " & expediente_colab_quinta_hora_entrada & " Hora Final Quinta: " & expediente_colab_quinta_hora_saida)
Next
Console.WriteLine(Environment.Newline & "Re-serialized {0}:", horarioColab)
Console.WriteLine(JsonConvert.SerializeObject(horarioColab, Formatting.Indented))
End Sub
Friend Sub Test()
Dim json as String = GetJson()
PreencheConfiguracoesColaborador(json)
End Sub
Function GetJson() as String
Dim Jstring As String = <![CDATA[
{
"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_opcao_quinta" : null,
"expediente_nome": "padr\u00e3o",
"expediente_feriados": "0",
"expediente_bloqueio_pc": 0,
"expediente_bloqueio_tolerancia": "0"
}],
}
}
]]>.Value
Return Jstring
End Function
End Module
Public Module Module1
Public Sub Main()
Console.WriteLine("Environment version: " & Environment.Version.ToString())
'Console.WriteLine("Json.NET version: " & GetType(JsonSerializer).Assembly.FullName)
Console.WriteLine("")
Try
TestClass.Test()
Catch ex as Exception
Console.WriteLine("Unhandled exception: ")
Console.WriteLine(ex)
Throw
End Try
End Sub
End Module