Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment lire JSON dans VB.NET ?

Newtonsoft.Json Deserialize JSON

Sujet résolu
    11 novembre 2021 à 11:49:54

    Bonjour,
    J'espère que vous allez bien :)

    Je me permet de vous contactez afin de savoir si quelqu'un de compétant et de gentil pourrai m'aidé a régler un petit soucis que j'ai concernant du JSON (venant d'une API reçu par un System.Net.Webclient) dans une solution VB.NET

    Mon soucis est le suivant :

    J'aimerai pouvoir récupérer les informations (Number) de "euros" et "dollars" (Object) depuis chaque (Object) "minute", "hour", "day" ... situé dans "data" (Object) pour pouvoir les utilisé dans des Textbox.text ou des Label.text

    Voici un aperçu de la réponse de l'API :

    {
        "status": true,
        "data": {
            "minute": {
                "dollars": 1,
                "euros": 0.87,
            },
            "hour": {
                "dollars": 60,
                "euros": 52.2,
            },
            "day": {
                "dollars": 1440,
                "euros": 1252.8,
            },
            "week": {
                "dollars": 10080,
                "euros": 8769.6,
            },
            "month": {
                "dollars": 40320,
                "euros": 35078.4,
            }
        }
    }

    J'ai utilisé jsonutils pour déclaré les class dans ma solution VB.NET :

        Public Class Minute
            Public Property dollars As Double
            Public Property euros As Double
        End Class
    
        Public Class Hour
            Public Property dollars As Double
            Public Property euros As Double
        End Class
    
        Public Class Week
            Public Property dollars As Double
            Public Property euros As Double
        End Class
    
        Public Class Month
            Public Property dollars As Double
            Public Property euros As Double
        End Class
    
        Public Class Data
            Public Property minute As Minute
            Public Property hour As Hour
            Public Property day As Day
            Public Property week As Week
            Public Property month As Month
        End Class
    
        Public Class Calculateur
            Public Property status As Boolean
            Public Property data As Data
        End Class

    J'ai essayé de faire ceci :

    Dim a = JsonConvert.DeserializeObject(Of Calculateur)(APIjsonWebClient)

    Et quand je veux afficher une valeur dans un label.text en faisant ceci :

    LabelTest.Text = a.data.week.euros.ToString & " euro"

    Cela me retourne une erreur :

    System.NullReferenceException : 'La référence d'objet n'est pas définie à une instance d'un objet.'

    Cette erreur s'affiche sur la ligne LabelTest.Text = ...

    Je suis débutant et j'essaye d'apprendre petit a petit

    Merci d'avance pour votre temps et votre aide,
    Cordialement

    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2021 à 12:37:09

      >si quelqu'un de compétant et de gentil pourrai m'aidé

      Je ne suis ni compétent ni gentil mais je te conseille d'utiliser le débogueur à quel moment de "a.data.week.euros" on tombe sur "Nothing".

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        15 novembre 2021 à 19:54:17

        Voici ce que me donne le debugger, j'espère ne pas mettre trompé dans la réponse a votre demande
         
        'Monlogiciel.exe' (CLR v4.0.30319: Monlogiciel.exe) : Chargé 'G:\Visual Studio 2019\Common7\IDE\Remote Debugger\x64\Runtime\Microsoft.VisualStudio.Debugger.Runtime.Desktop.dll'. Chargement des symboles ignoré. Le module est optimisé et l'option du débogueur 'Uniquement mon code' est activée.
        Monlogiciel.Hub.Calculateur.data.**get** retournée Nothing.
        Cordialement

        • Partager sur Facebook
        • Partager sur Twitter
          15 novembre 2021 à 22:10:10

          Avec votre extrait, on ne sait pas si c'est "data" qui vos "Nothing" ou data.week", mais vous devriez vérifier la génération de votre "Calculateur".

          Je connais assez peu "Newtonsoft.Json" mais je pense que cela manque un peu d'attributs .NET pour piloter correctement le désérialisateur.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            16 novembre 2021 à 13:17:47

            voir même commencer par vérifier si a n'est pas Nothing dès le départ. Mettre un point d'arrêt sur cette ligne et voir ce que vaut cette variable.

            Edit: et dans le code qui fournit, il manque la classe Day

            -
            Edité par umfred 16 novembre 2021 à 13:36:11

            • Partager sur Facebook
            • Partager sur Twitter
              16 novembre 2021 à 18:21:11

              umfred a écrit:

              voir même commencer par vérifier si a n'est pas Nothing dès le départ. Mettre un point d'arrêt sur cette ligne et voir ce que vaut cette variable.

              Edit: et dans le code qui fournit, il manque la classe Day

              -
              Edité par umfred il y a environ 4 heures


              Vous avez raison, que je suis bête, en faite lorsque : "status" = false il ne renvoie pas de data..

              J'aurai du procéder par étapes et lire petit a petit les valeurs arrivé

              J'avais bon depuis le début juste j'ai sauté une étape de test lors de mon code

              Merci de votre aide a tous :)

              • Partager sur Facebook
              • Partager sur Twitter

              Comment lire JSON dans VB.NET ?

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown