IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Afficher un JSON dans un datagridview


Sujet :

VB.NET

  1. #1
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut Afficher un JSON dans un datagridview
    Bonjour, j'ai un JSON que je voudrais afficher dans un datagridview mais j'ai une erreur qui est du je crois au sous nœud "name", j'ai bien crée mes classes pour représenter mes données mais j'ai une erreur, merci :

    ERREUR :
    Nom : 2023-01-31_16h57_16.png
Affichages : 103
Taille : 15,4 Ko

    Classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Class Utilisateur
     
    #Region "Propriétés"
        Public Property gender As String
        Public Property name As Name
        Public Property location As Location
        Public Property email As String
        Public Property login As Login
        Public Property dob As Dob
        Public Property registered As Registered
        Public Property phone As String
        Public Property cell As String
    #End Region
     
    Public Class Name
        Public Property title As String
        Public Property first As String
        Public Property last As String
    End Class ....
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Dim jsonString As String = File.ReadAllText("C:\datas.json")
                Dim data As List(Of Utilisateur) = JsonConvert.DeserializeObject(Of List(Of Utilisateur))(jsonString)
                Dim bs As New BindingSource
                bs.DataSource = data
                DataGridView1.DataSource = bs

    Fichier JSON :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    "utilisateurs": [
        {
          "gender": "male",
     
          "name": {
                  "title": "Mr",
                  "first": "Titouan",
                  "last": "Martinez"
                   },
     
          "location": 
                   {
                   "street": {
                              "number": 7644,
                              "name": "Boulevard de Balmont"
                             },
                   "city": "Angers",
                   "state": "Loire",
                   "country": "France",
                   "postcode": 73323
                   },
     
          "email": "titouan.martinez@example.com",
     
          "login": {
                    "uuid": "fabc208b-2e53-4467-9876-91825753d1fd",
                    "username": "lazygorilla631",
                    "password": "lipstick",
                    "salt": "i6umsADd",
                    "md5": "eb7f2a59bbbd3d2b53f586ce4f10b774",
                    "sha1": "21b3214a4b0a791eb6c5461cd0c3e106ba5d64e8",
                    "sha256": "9dc4aaddf4073c6b84e4396b7fa21ad6c5acb3067cd636582c2fee1f9b269f0e"
                    },
     
          "dob": {
                 "date": "1950-01-23T02:43:11.033Z"
                 },
     
          "registered": {
                        "date": "2011-07-08T01:21:06.991Z"
                        },
     
          "phone": "02-43-28-09-81",
     
          "cell": "06-16-01-70-15"
        }
    ce code la fonctionne mais je n'arrive pas à aller chercher le "name,first" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DataGridView1.AutoGenerateColumns = False
                Dim FileName As String = "C:\datas.json" 'IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.json")
                Dim content As String = IO.File.ReadAllText(FileName)
                Dim results As Rootobject = JsonConvert.DeserializeObject(content, GetType(Rootobject))
                Dim dataResults = results.utilisateurs.Select(Function(data) New Utilisateur With {.gender = data.gender}).ToList
                DataGridView1.DataSource = dataResults

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    j'ai fait un test désespéré, j'ai ajouté des crochets au début et la fin du json, je n'ai plus d'erreur par contre il n'y a rien dans mon objet "data" et par conséquent rien dans mon datagrid

    Nom : Capture2.JPG
Affichages : 84
Taille : 24,9 Ko

  3. #3
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    Bon j'ai résolu le problème en passant par une autre méthode, merci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
         Dim jsonString As String = File.ReadAllText("..\..\Datas\datas.json")
                Dim jsonObject As JObject = JObject.Parse(jsonString)
                For Each User As JObject In JArray.Parse(jsonObject.SelectToken("utilisateurs").ToString)
                    DsUser1.daUser.Rows.Add(User.SelectToken("name.last").ToString, User.SelectToken("name.first").ToString, User.SelectToken("gender").ToString,
                                            User.SelectToken("dob.date").ToString, User.SelectToken("phone").ToString, User.SelectToken("cell").ToString)
                Next

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 503
    Par défaut
    sauf erreur de ma part et de copier-coller, il devait manquer un crochet fermant pour fermer la liste utilisateurs que tu nous a donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "utilisateurs": [
        {
        [...]
        }
    Ensuite, comme c'est une liste qu'il y a dans le JSON, il faut le récupérer dans une liste
    Enfin j'ai trouvé ça pour l'affichage de listes imbriquées dans un DataGridView (il faut créé une colonne dans laquelle on "met à plat" la liste imbriquée, ce que tu as finalement fait)
    https://stackoverflow.com/questions/...string-in-grid

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher un fichier Json dans un Datagridview
    Par Techdream dans le forum VB.NET
    Réponses: 0
    Dernier message: 07/08/2018, 22h59
  2. Afficher des enregistrement dans un DataGridView
    Par Mohiiz dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/10/2009, 15h28
  3. Afficher le detail dans un datagridview a la mode datagrid
    Par skunkies dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/03/2009, 11h15
  4. [C#] Afficher un SQLDataReader dans un datagridview
    Par doudoustephane dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/04/2007, 11h12
  5. Réponses: 4
    Dernier message: 16/11/2006, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo