[Fork] [Fork] [Fork] [Fork] [Fork] [Fork] https://stackoverflow.com/questions/76782154/set-default-value-when-deserializing-json-missing-properties-in-json

VbNet · Console

/Program.vb

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

;