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

Format d'échange (XML, JSON...) Java Discussion :

[Jackson] parsing des valeurs Json dans un tableau


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par défaut [Jackson] parsing des valeurs Json dans un tableau
    bonjour, voici mon modèle de donnée json
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {  "data": [   { "num": "01000017DC416B01",  "active": true, "serial": "0610005910", "can_types":[1, 2,3] }, {  "num": "01000017DC416B01",  "active": true, "serial": "0610005910", "can_types":[1, 7,2]} ], "age":"10" }
    je veut récupérer les 3 premières propriétés du tableau (num, active et serial) plus celle en dehors du tableau age (que j'arrive d'ailleurs à récupérer mais pas celle qui sont dans le tableau.
    J'ai créé 2 classes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class MyFields {
     
        private String num;
     
        private boolean active;
     
        private String serial;
    }
    et
    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
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class MyFieldsWrapper {
     
        private List<MyFields> myFields;
        private int age;
     
        public List<MyFields> getMyFields() {
            return myFields;
        }
     
        public void setMyFields(List<MyFields> myFields) {
            this.myFields = myFields;
        }
    }
    Voici mon main dans lequel ma liste d'objets du tableau json n'est jamais récupérée, la valeur retournée est null je n'arrive pas à savoir pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static void main(String arg []){
     
            String json ="{  \"data\": [ { \"num\": \"01000017DC416B01\",  \"active\": true, \"serial\": \"0610005910\", \"can_types\":[1, 2,3]\n" +
            "}, {  \"num\": \"01000017DC416B01\",  \"active\": true, \"serial\": \"0610005910\", \"can_types\":[1, 7,2] } ], \"age\":\"10\" }";
     
            ObjectMapper mapper = new ObjectMapper();
            MyFieldsWrapper myWrapper = mapper.readValue(json, MyFieldsWrapper.class);
            System.out.println(myWrapper.getAge()); // retourne bien 10
            System.out.println(myWrapper.getMyFields()); // me retourne null pourquoi?
    }

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par défaut
    j'ai pu trouver la solution, c'était juste un problème de mapping il fallait ajouter
    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
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class MyFieldsWrapper {
     
        @JsonProperty("data")
        private List<MyFields> myFields;
        private int age;
     
        public List<MyFields> getMyFields() {
            return myFields;
        }
     
        public void setMyFields(List<MyFields> myFields) {
            this.myFields = myFields;
        }
    }

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    ... ou juste l'appeler "data" au lieu de "myFields", comme avec "age"...

    Enfin d'une manière ou d'une autre, les noms ne sont pas très bons.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par défaut
    Pour les noms ce n'était que des exemples pour des raison de confidentialité, en réalité mon modèle de données n'a aucun nom mentionné dans l'exemple mais la forme de données est la même

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/03/2013, 13h40
  2. Réponses: 7
    Dernier message: 01/01/2013, 18h03
  3. Réponses: 3
    Dernier message: 26/10/2010, 22h14
  4. Réponses: 1
    Dernier message: 04/06/2010, 13h40
  5. Manipulation des valeurs contenues dans un tableau
    Par khasanouray dans le forum Langage
    Réponses: 3
    Dernier message: 29/05/2007, 20h36

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