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

Windows Phone .NET Discussion :

Json.Net et Listbox.


Sujet :

Windows Phone .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Json.Net et Listbox.
    Bonjour,
    Voilà j'ai quelques soucis pour la récupération et l'affichage de données json.

    Tout d'abord voilà les données json à traiter :

    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
    [{"id":"298",
    "title":"test actu",
    "subtitle":"blablabla...",
    "image_url":"truc.png",
    "ingredients":"retruc.png",
    "preparation":"blablabla...",
    "category":"2013-01-21",
    "submission_date":1363820400,
    "name":"2013-01-21",
    "comment_url":"toto","note":2},
     
    {"id":"296",
    "title":"noyon test",
    "subtitle":"bonjour",
    "image_url":"fdsfd.png",
    "ingredients":"tfghhfg",
    "preparation":"bonjour",
    "category":"2013-03-06",
    "submission_date":1362524400,
    "name":"2013-03-06",
    "comment_url":"toto",
    "note":2}]
    A savoir que ces données ne posent aucun problème pour être manipulées avec la version Android de l'appli.

    Tout d'abord, j'ai une erreur de type JsonReaderException entre les 2 "tableaux" (à la virgule séparant les 2 blocs)
    "Additional text encountered after finished reading JSON content: ,. Path '', line 1, position 447."

    La solution que j'ai trouvé mais qui n'est vraiment pas terrible, c'est d'effectuer plusieurs requêtes sur un élément à la fois.

    De plus, lorsque j'essaye de l'afficher dans une listbox, j'ai seulement un caractère par Item de la ListBox.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var t = e.Result.ToString();
    t = t.Remove(0, 1); // Les [ et ] en début et fin posent problème, on les retire
    t = t.Remove(t.Length - 1, 1); // Les [ et ] en début et fin posent problème, on les retire
     
    RootObject result = JsonConvert.DeserializeObject<RootObject>(t);
    listBox1.ItemsSource = result.title;
    Je sèche vraiment depuis hier sur ces 2 problèmes.
    Merci à mon futur sauveur.

  2. #2
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    Peut-on voir le code de ta classe RootObject?
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class RootObject
        {
            public string id { get; set; }
            public string title { get; set; }
            public string subtitle { get; set; }
            public string image_url { get; set; }
            public string ingredients { get; set; }
            public string preparation { get; set; }
            public string category { get; set; }
            public int submission_date { get; set; }
            public string name { get; set; }
            public string comment_url { get; set; }
            public int note { get; set; }
        }
    J'ai utilisé l'outil en ligne http://json2csharp.com/ pour la générer.

  4. #4
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    là, un détail m'a échappé, tu veux déserialiser deux objets en 1 seul.

    Je pense qu'un truc du genre serait mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                var t = e.Result.ToString();
                t = t.Remove(0, 1); // Les [ et ] en début et fin posent problème, on les retire
                t = t.Remove(t.Length - 1, 1); // Les [ et ] en début et fin posent problème, on les retire
     
                var tab = t.Split(',');
                List<RootObject> objects = new List<RootObject>(tab.Length);
                foreach (var item in tab)
                {
                    objects.Add(JsonConvert.DeserializeObject<RootObject>(item));
                }
                listBox1.ItemsSource = objects;
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Je comprends ce que tu veux dire, merci !
    Cependant, j'ai toujours une erreur :
    "Unexpected end when deserializing object. Path 'id', line 1, position 11."
    La première case de tab contenanit {"id":"290".

    J'ai tenté de supprimer l'accolade ouvrante en pensant que le problème venait de là, et j'avais une autre erreur :
    "Error converting value "id" to type 'VilleProject.RootObject'. Path '', line 1, position 4."

    Merci d'essayer de m'aider en tout cas.

Discussions similaires

  1. [VB.NET][ASP.NET] Dataset + Listbox
    Par Icewall dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/11/2010, 16h44
  2. [VB.net] problème ListBox
    Par Ailito dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/07/2009, 12h42
  3. [Vb.net] probléme listBox
    Par identifia dans le forum Débuter
    Réponses: 1
    Dernier message: 19/05/2009, 10h55
  4. [asp.net][c#]Listbox avec ReadOnly
    Par jerome.mace dans le forum ASP.NET
    Réponses: 4
    Dernier message: 18/07/2008, 10h40
  5. [vb.net] [débutant] Listbox .
    Par Amenos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/02/2006, 14h26

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