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 :

Parser du Json - Newtonsoft.Json


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut Parser du Json - Newtonsoft.Json
    Bonjour,

    J'essaye de parser le code JSON ci-dessous avec la librairie Newtonsoft.Json.

    Mon code fonctionne bien mais impossible d'avoir accès aux sous éléments en boucle.
    par exemple impossible d'atteindre la variable type dans le sous ensemble Reference

    J'arrive toutefois à lire la variable nom


    Si vous avez une idée je suis preneur merci.



    Extrait code 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
    { 
       "participants":[ 
          { 
             "nom":"PERSY",
             "num":1,
             "age":24,
             "sexe":"H",
             "Tendance":{ 
                "code":"020",
                "libelleCourt":"BAI",
                "libelleLong":"BAI"
             },
             "indicateurInedit":false,
             "nombreCourses":20,
             "nombreVictoires":2,
             "Palmares":{ 
                "gainsCarriere":4380000,
                "gainsVictoires":1710000,
                "gainsPlace":2670000,
             },         
             "Reference":{ 
                "type":"SIMPLE ",
                "rapport":84.5,
                "typeRST":"REFERENCE",
                "indicateurTendance":"+",
                "nombreIndicateurTendance":5.88,
                "date":1448643342000,
                "permutation":1,
                "favoris":false,
                "num":1
             },
             "url":"https://www.monsite.com"
          },
    ]
     }

    Code utilisé

    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
     
     
    Imports Newtonsoft.Json
    Imports Newtonsoft.Json.Linq
     
    Public Class Form1
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
     
            Dim json As JObject = JObject.Parse(Me.RichTextBox1.Text)
     
     
            For Each Row In json("participants")
     
                MsgBox(Row("type"))
     
     
            Next
     
     
     
     
        End Sub
     
    End class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Public Class JSON_result
        Public code As Integer
        Public nom As String
        Public type n As String
     
     
    End Class

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Ouippp, ça m’intéresse aussi car je cherche à lire les fichiers Json.
    Newtonsoft.Json, c'est une librairies gratuite ? , Il y a d'autre alternatives ?

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Oui Newtonsoft.Json est une librairie gratuite et c'est ce qui se fait de mieux sur le marché

    Pour lire la valeur de type, voici un exemple :
    Code VB.NET : 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
    Dim json = "{""participants"":[{""nom"":""PERSY"",""num"":1,""age"":24,""sexe"":""H"",""Tendance"":{""code"":""020"",""libelleCourt"":""BAI"",""libelleLong"":""BAI""},""indicateurInedit"":false,""nombreCourses"":20,""nombreVictoires"":2,""Palmares"":{""gainsCarriere"":4380000,""gainsVictoires"":1710000,""gainsPlace"":2670000,},""Reference"":{""type"":""SIMPLE "",""rapport"":84.5,""typeRST"":""REFERENCE"",""indicateurTendance"":""+"",""nombreIndicateurTendance"":5.88,""date"":1448643342000,""permutation"":1,""favoris"":false,""num"":1},""url"":""https://www.monsite.com""},]}"
     
    	Dim obj = JObject.Parse(json)
     
    	Dim participantsChildren = obj("participants").Children()
    	Dim referenceChildren = participantsChildren("Reference").Children().ToList()
     
    	For Each item As JProperty In referenceChildren
    		item.CreateReader()
     
    		Select Case item.Name
    			Case "type"
    				Console.WriteLine(item.Value.ToString())
    				Exit Select
    			Case Else
    				Exit Select
    		End Select
    	Next
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Salut à tous,

    Merci beaucoup pour ton aide DotNetMatt, ton exemple fonctionne à merveille.

    Pou ma culture, peux-tu stp m'éclairer sur la signification de cette ligne de code ?


    Merci par avance

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    La méthode CreateReader permet de lire le JSON. En regardant le code source, on peut voir que cette méthode initialise un JTokenReader qui est converti en JsonReader.

    Juste pour info, une autre possibilité pour ton cas serait d'utiliser une déserialisation personnalisée afin de récupérer un objet ayant la même structure que ton JSON. Ensuite il suffirait de lire les propriétés de cet objet pour récupérer les valeurs. Au final, c'est juste une autre facon de procéder.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    La méthode CreateReader permet de lire le JSON. En regardant le code source, on peut voir que cette méthode initialise un JTokenReader qui est converti en JsonReader.

    Juste pour info, une autre possibilité pour ton cas serait d'utiliser une déserialisation personnalisée afin de récupérer un objet ayant la même structure que ton JSON. Ensuite il suffirait de lire les propriétés de cet objet pour récupérer les valeurs. Au final, c'est juste une autre facon de procéder.

    Salut à tous,

    DotNetMatt, merci pour toutes ces informations.

Discussions similaires

  1. Parser des entiers avec JSON
    Par natalie75 dans le forum Android
    Réponses: 0
    Dernier message: 25/04/2015, 17h43
  2. [Débutant] probleme avec newtonsoft.json.dll
    Par marooh dans le forum Visual Studio
    Réponses: 1
    Dernier message: 24/07/2012, 15h05
  3. Parser String[][][] en flux json
    Par Nicolas74100 dans le forum Langage
    Réponses: 3
    Dernier message: 03/10/2010, 01h06
  4. [JSON] Extension JSON disponible sur free.fr ?
    Par castrogne dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 26/05/2007, 21h49

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