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

Silverlight Discussion :

Désérialiser des Objets JSON


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut Désérialiser des Objets JSON
    Bonjour à tous,

    C'est un projet WP7

    J'ai une exception lors de l'utilisation de DataContractJsonSerializer pour récupérer mes objets Json, j'ai utilisé le code indiqué ici :

    http://timheuer.com/blog/archive/200...lverlight.aspx

    voici mon code :

    Code c# : 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
     
    public void LoadData()
            {
                WebClient proxy = new WebClient();
                proxy.OpenReadCompleted += new OpenReadCompletedEventHandler(proxy_OpenReadCompleted);
                proxy.OpenReadAsync(new Uri("http://toto.google.com/projects"));
            }
     
            void proxy_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                Stream strm = e.Result;
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Project[]));
                Project[] ppl = (Project[])ser.ReadObject(strm);
     
     
     
                if (ppl.Length > 0)
                {
                    // do something with the data
                    // bind, interate, whatever
                    foreach (Project project in ppl)
                    {
                        Projects.Add(project);
                    }
                }
            }

    Avec :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public class Project
        {
            public string id { get; set; }
            public string name { get; set; }
        }

    L'exception est : InvalidCastException sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Project[] ppl = (Project[])ser.ReadObject(strm);
    Avec comme résultat de mon appel :

    {"projects":[{"id":13002,"name":"test"},{"id":23001,"name":"A test Project"},{"id":27001,"name":"Prez"},{"id":28001,"name":"testeur"},{"id":32001,"name":"TestAjout"}]}
    Merci d'avance pour toutes pistes
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    En JSON Id semble être un int, dans ton code tu mets un string.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    j'ai déjà fait le test, mais change rien

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    public int id { get; set; }
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Et en Silverlight normal ça fonctionne ?

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Le JSON présenté ne semble pas représenter un Project[].

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Je pense avoir trouver.

    La classe en fait c'est ça

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class Projects
    {
        public List<Project> projects { get; set; }
     
        public Projects()
        {
            projects = new List<Project>();
        }
    }
     
    public class Project
    {
        public int id { get; set; }
        public string name { get; set; }
    }

    Avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Projects));

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    J'ai pas encore essayé, mais pourquoi ça serait différent vu que DataContractJsonSerializer supporte WP7 ?

    Je ferais le test qd même
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/09/2013, 19h13
  2. Réponses: 6
    Dernier message: 12/02/2004, 21h55
  3. [MFC] libération des objets GDI's
    Par Kevgeii dans le forum MFC
    Réponses: 5
    Dernier message: 01/02/2004, 10h37
  4. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 11h47
  5. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53

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