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


Sujet :

VB.NET

  1. #1
    Membre habitué Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Points : 135
    Points
    135
    Par défaut Parser du JSON
    Bonjour,

    Souhaitant développer une application en rapport avec le cinéma, j'essaye d'utiliser l'API de The Movie DataBase (TMDB).

    J'arrive à interroger et afficher la réponse sous forme de JSON, mais c'est après que cela se complique. Je ne parviens pas à récupérer les informations parsées.

    J'ai essayé de commencer simple en utilisant "Bienvenue chez les ch'tis" qui ne retourne qu'un seul résultat (!).

    Voici le code utilisé, en utilisant NewtonSoft JSON .NET :

    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
     Dim Request As HttpWebRequest
            Dim Response As HttpWebResponse
            Dim sReader As StreamReader
     
            Request = DirectCast(WebRequest.Create("https://api.themoviedb.org/3/search/movie?api_key=#CLE_API#&query=bienvenue+chez+les+ch%27tis&language=fr-fr"), HttpWebRequest)
            Response = DirectCast(Request.GetResponse(), HttpWebResponse)
     
            sReader = New StreamReader(Response.GetResponseStream())
            Dim infos As String = Nothing
     
            infos = sReader.ReadToEnd()
     
            Dim film As Result = New Result
     
            film = JsonConvert.DeserializeObject(Of Result)(infos)
     
            TextBox1.Text = film.Title
    en ayant créé les classes suivantes :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Public Class Result
     
                <JsonProperty("vote_count")>
                Public Property VoteCount As Integer
     
                <JsonProperty("id")>
                Public Property Id As Integer
     
                <JsonProperty("video")>
                Public Property Video As Boolean
     
                <JsonProperty("vote_average")>
                Public Property VoteAverage As Double
     
                <JsonProperty("title")>
                Public Property Title As String
     
                <JsonProperty("popularity")>
                Public Property Popularity As Double
     
                <JsonProperty("poster_path")>
                Public Property PosterPath As String
     
                <JsonProperty("original_language")>
                Public Property OriginalLanguage As String
     
                <JsonProperty("original_title")>
                Public Property OriginalTitle As String
     
                <JsonProperty("genre_ids")>
                Public Property GenreIds As Integer()
     
                <JsonProperty("backdrop_path")>
                Public Property BackdropPath As String
     
                <JsonProperty("adult")>
                Public Property Adult As Boolean
     
                <JsonProperty("overview")>
                Public Property Overview As String
     
                <JsonProperty("release_date")>
                Public Property ReleaseDate As String
            End Class
     
     
     
    Public Class Example
     
                <JsonProperty("page")>
                Public Property Page As Integer
     
                <JsonProperty("total_results")>
                Public Property TotalResults As Integer
     
                <JsonProperty("total_pages")>
                Public Property TotalPages As Integer
     
                <JsonProperty("results")>
                Public Property Results As Result()
            End Class
    Et enfin, voici le code JSON retourné par le site de TMDB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"page":1,"total_results":1,"total_pages":1,"results":[{"vote_count":1404,"id":8265,"video":false,"vote_average":6.7,"title":"Bienvenue chez les Ch'tis","popularity":9.487,"poster_path":"\/hIOlAnhYro2uHDQTdtkfwIs9fly.jpg","original_language":"fr","original_title":"Bienvenue chez les ch'tis","genre_ids":[35],"backdrop_path":"\/o2FFyK2lFk9VyumyNwG0bUk2CeR.jpg","adult":false,"overview":"Philippe Abrams est directeur de la poste de Salon-de-Provence. Il est marié à Julie, dont le caractère dépressif lui rend la vie impossible. Pour lui faire plaisir, Philippe fraude afin d'obtenir une mutation sur la Côte d'Azur. Mais il est démasqué: il sera muté à Bergues, petite ville du Nord. Pour les Abrams, sudistes pleins de préjugés, le Nord c'est l'horreur, une région glacée, peuplée d'êtres rustres, éructant un langage incompréhensible, le \"cheutimi\". Philippe ira seul. À sa grande surprise, il découvre un endroit charmant, une équipe chaleureuse, des gens accueillants, et se fait un ami : Antoine, le facteur et le carillonneur du village, à la mère possessive et aux amours contrariées. Quand Philippe revient à Salon, Julie refuse de croire qu'il se plait dans le Nord. Elle pense même qu'il lui ment pour la ménager. Pour la satisfaire et se simplifier la vie, Philippe lui fait croire qu'en effet, il vit un enfer à Bergues.","release_date":"2008-01-09"}]}
    ou en plus clair :

    Nom : 2019-07-12_14h10_25.png
Affichages : 328
Taille : 32,4 Ko

    En ayant suivi des exemples, et passé des heures à chercher sur le net, j'ai finis par utilisé le NuGet : Newtonsoft.json qui semblait prometteur ... et puis en fait non, je ne parviens toujours pas à ne serait-ce qu'afficher le titre dans un textbox.

    Pourriez-vous svp m'aider sur ce point, quitte à me proposer une méthode complétement différente. Je n'en peux plus de ne pas avancer à cause de l'impossibilité de traiter les infos recueillies en JSON.
    En mettant le contenu de "infos" dans un textbox, tout le contenu du JSON s’affiche correctement. Donc le problème vient bel et bien de la déserialization de ce dernier format.

    Merci d'avance pour votre aide.

    Cordialement-

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    dnas visual studio il y a un menu dans lequel tu colles du json et il créé les classes nécessaires
    après c'est bien newtonsoft et deserialize
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  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 : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Tu es tres proche du but ! Je n'ai pas verifie toutes les proprietes mais ca a l'air correct.

    Il faut que tu fasses ce qui suit pour remplir toutes les proprietes de la classe Example :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim data = JsonConvert.DeserializeObject(Of Example)(infos)
    Dans la classe Example, ta propriete Results est un tableau qu'il faut parcourir. Donc pour afficher le titre du premier film, il faut faire quelque chose comme suit pour recuperer le titre du premier film :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim film = data.Results(0)  ' On retourne le premier objet de type Result
    Dim filmTitle = film.Title
    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 habitué Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Points : 135
    Points
    135
    Par défaut
    Rah la vache DotNetMatt t'es un boss !

    Désolé pour le temps de réponse, mais je n'ai pas pu me replonger dans mon projet depuis un petit moment. Et là je repasse sur le forum pour voir s'il y a une réponse à mon post, et te voilà avec tes 3 lignes de code !

    Au début je me suis dit : "bin non en fait, je veux piocher dans la classe Result, pas dans Example ...", et puis en réfléchissant, et en essayant de comprendre le schéma, la lumière s'est faite ! J'ai testé ton code et là, miracle ! ça fonctionne du tonnerre !
    Effectivement je n'étais pas loin de la vérité, juste un mot à changer

    En tout cas, merci encore, je vais enfin pouvoir bosser à fond et faire quelque chose de génial.

    Bon dimanche !

  5. #5
    Membre confirmé Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 458
    Points
    458
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    dnas visual studio il y a un menu dans lequel tu colles du json et il créé les classes nécessaires


    Dommage que l'inverse ne soit pas possible (enfin, j'ai pas trouvé où)...
    Tant va la cruche à l'eau qu'à la fin y'a plus d'eau.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut Autres liens utiles
    Salut,

    Si tu a pas mal d'appels a des sites tiers qui te retournent du json voila 2 liens et une lib qui te seront tres utiles:

    http://json2csharp.com => te permet de creer des classes C# a partir de json (il existe des tas de converters c# vers vb.net)
    https://jsonformatter.curiousconcept.com => pour reformatter du json et le rendre plus lisible


    Et bin sur http://restsharp.org => une bibliotheque qui facilite grandement les appels json.

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

Discussions similaires

  1. Parser un JSON avec des variables avec des "-" et des ":"
    Par Quentin33 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 22/05/2011, 01h04
  2. Parser du json
    Par nox73 dans le forum Langage
    Réponses: 4
    Dernier message: 19/05/2011, 19h52
  3. Parser page JSON en PHP
    Par tonymx15 dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2011, 00h55
  4. [Prototype] Parser du JSON aprés une requête Ajax
    Par Gregory.M dans le forum Bibliothèques & Frameworks
    Réponses: 18
    Dernier message: 16/06/2010, 10h21
  5. parser un json
    Par Henry9 dans le forum jQuery
    Réponses: 4
    Dernier message: 18/05/2009, 21h13

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