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

GWT et Vaadin Java Discussion :

Overlay types et JSON


Sujet :

GWT et Vaadin Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Par défaut Overlay types et JSON
    Salut à tous,
    Je cherche à récupérer des données dans ce type de JSON :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"records": [{"names": {"John": ["50", "H", "US"], "Jack": ["50", "H", "US"]}, "style": "TR"}]}
    J’utilise la méthode des overlay type de GWT pour faire cela.

    Pour récupérer la valeur dans « style », pas de soucis, je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public final native String getStyle()
         /*-{
             return this.records[0].style;
         }-*/;
    Là où cela se corse, c’est au quand je veux récupérer, par exemple, John et 50, H, US.
    J’ai essayé cela, ce qui me revoit la valeur null :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public final native String getNames(String i)
         /*-{
             return this.records[0].names[i];
         }-*/;
    J’ai aussi tente de faire comme cela, ce qui me renvoie un champ vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           public final native JsArray<json> getArray(String key) /*-{
            return this[key] ? this[key] : new Array();
    }-*/;
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result.getArray("names").toString()
    Comment récupérer ce qui est compris dans « names ». Quelqu’un a une idée ?

    Merci d’avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Hello,

    En regardant ton JSON de plus près, si tu veux récupérer John :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return this.records[0].names.John
    et pour les valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    this.records[0].names.John[0] = 50
    this.records[0].names.John[1] = H
    this.records[0].names.John[2] = US
    Cordialement,
    Maxime

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Par défaut
    Merci pour ta réponse.

    Cela fonctionne mais je ne suis pas sensé connaitre « John ». C’est-à-dire que le JSON pourrait être comme ça, je ne le sais pas à l’avance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"records": [{"names": {"Cedric": ["50", "H", "US"], "Jean": ["50", "H", "US"]}, "style": "TR"}]}
    Donc, il faudrait que je puisse récupérer les noms avant de récupérer les listes qu’ils contiennent. Et je n’y arrive pas.

  4. #4
    Membre éclairé
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Par défaut
    Ta structure Json, je pense, n'est pas bonne.
    Vois ceci comme une liste de clé/valeur.

    Je ne sais pas à quoi représente tes données, mais comme cela, tu pourras typer tes données et tu auras une meilleure visibilité pour ton 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
    {
      "records": [
        {
          "users": [
            {
              "name": "Cedric",
              "type": "H",
              "age": "50",
              "country": "US"
            },
            {
              "name": "Jean",
              "type": "H",
              "age": "50",
              "country": "US"
            }
          ],
          "style": "TR"
        }
      ]
    }

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Par défaut
    Oui je pense que je vais finir par me diriger la dessus.

    Mais je voudrais demander une dernière fois si quelqu'un ne connaitrait pas un code pour récupérer le nom des attributs? C'est a dire quelque chose qui renverrait "name,type,age,country" dans l'exemple de TokTokTok. Cela devrait me permettre aussi de récupérer Jack et John dans mon exemple.

    Le code générant du JSON n'étant pas de moi, je préfère éviter d'y toucher, à moins que j'y sois vraiment obligée.

  6. #6
    Membre éclairé
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Par défaut
    Tu peux utilisé le JsonObject

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String json = "{\"records\": [{\"names\": {\"John\": [\"50\", \"H\", \"US\"], \"Jack\": [\"50\", \"H\", \"US\"]}, \"style\": \"TR\"}]}";
     
        JSONObject obj = (JSONObject) JSONParser.parseStrict(json);
        JSONObject names = (JSONObject) ((JSONObject) ((JSONArray) obj.get("records")).get(0)).get("names");
        for (String key : names.keySet()) {
          Window.alert(key);
        }

  7. #7
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Par défaut
    Merci

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

Discussions similaires

  1. Type chaine Json
    Par grunk dans le forum TypeScript
    Réponses: 3
    Dernier message: 06/03/2015, 18h33
  2. Réponses: 4
    Dernier message: 16/01/2013, 16h14
  3. Récupérer fichier de type 'application/x-json' en cross-domain
    Par jdflaugergues dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/09/2010, 21h46
  4. fusion obj javascript type json / xml
    Par spy74 dans le forum jQuery
    Réponses: 1
    Dernier message: 22/06/2010, 01h24
  5. Transmission d'une variable type JSON
    Par Invité dans le forum jQuery
    Réponses: 9
    Dernier message: 15/12/2009, 14h02

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