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 :

Fichier JSON avec mêmes objets


Sujet :

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

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Fichier JSON avec mêmes objets
    Bonjour,

    J'utilise la librairie jackson pour parser un fichier JSON.

    Voici sa structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    {
    city_info:{...},
    forecast_info:{...},
    current_condition:{...},
    fcst_day_0:{...},
    fcst_day_1:{...},
    fcst_day_2:{...},
    fcst_day_3:{...},
    fcst_day_4:{...}
    }
    J'arrive à parser les objets sauf que je dois dois gérer 5 attributs fcst_day_x dans mon code. J'aimerai plutôt une lecture en boucle de ces 5 objets json que je mettrai dans un tableau contenant des fcst_day_x. En effet, si le fichier JSON était optimisé, il y aurait un tableau fcst_day_x avec 5 éléments...

    Comment peut-on faire cela ?

    Merci.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu utilise quoi dans jackson? Mapping? Annotations? Streaming? La solution dépend de ce que tu as déjà qui reste à adapter.

  3. #3
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu utilise quoi dans jackson? Mapping? Annotations? Streaming? La solution dépend de ce que tu as déjà qui reste à adapter.
    Bonjour,

    J'utilise les annotations comme cela :
    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
     
    @JsonIgnoreProperties(ignoreUnknown=true)
    public class WeatherData
    {
        @JsonProperty("city_info")
        private CityInfo cityInfo = null;
     
        @JsonProperty("forecast_info")
        private ForecastInfo forecastInfo = null;
     
        @JsonProperty("current_condition")
        private CurrentCondition currentCondition = null;
     
      ...
     
    }
    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  4. #4
    Membre confirmé Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Points : 500
    Points
    500
    Par défaut
    Il n'y a pas de miracle ici. Tu dois écrire un deserializer custom pour ton objet WeatherData. Dis moi si tu es perdu je te mettrai du code.
    Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.

  5. #5
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par ruscov Voir le message
    Il n'y a pas de miracle ici. Tu dois écrire un deserializer custom pour ton objet WeatherData. Dis moi si tu es perdu je te mettrai du code.
    Franchement là, je patine...

    As-tu un p'tit exemple de code ?

    Merci d'avance.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  6. #6
    Membre confirmé Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Points : 500
    Points
    500
    Par défaut
    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
     
    class WeatherDataDeserializer extends JsonDeserializer<WeatherData> {
     
        @Override
        public WeatherData deserialize(final JsonParser parser,
                final DeserializationContext content) throws IOException,
                JsonProcessingException {
     
            final ObjectCodec codec = parser.getCodec();
            final JsonNode node = codec.readTree(parser);
     
            final WeatherData weatherData = new WeatherData ();
            final Iterator<String> fieldNameIter = node.getFieldNames();
            while (fieldNameIter.hasNext()) {
                final String fieldName = fieldNameIter.next();
                if (fieldName.equalsIgnoreCase("city_info")) {
                    weatherData .setCityInfo(node.get(fieldName).getTextValue());
                } else if (fieldName.equalsIgnoreCase( ...)) {
                    weatherData .set....
                } else if (fieldName.startsWith("fcst_day_")) {
                    weatherData.addFcstDay(node.get(fieldName).getTextValue());
                }
            }
     
            return weatherData ;
        }
    }
    Dans ton WeatherData :

    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
     
    public class WeatherData
    {
         public List<FcstDay> fcstDays;
     
         ....
     
     
         public void addFcstDay(String value){
             if(fcstDays == null){
                 fcstDays = new ArrayList();
             }
             fcstDays.add(new FcstDay(value);
         }
    }
    Quelque chose dans le style. J'espère que ca patinera moins comme ça
    Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.

  7. #7
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par ruscov Voir le message
    ...
    Quelque chose dans le style. J'espère que ca patinera moins comme ça
    Et bien tout cela semble sympa : je vais tester.

    Merci : +1

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

Discussions similaires

  1. Problème d'encodage fichier JSON avec WCF REST Service
    Par Spikuria dans le forum Services Web
    Réponses: 0
    Dernier message: 09/03/2012, 10h24
  2. [SQL2008] Nombre fichiers Temp avec même disque
    Par castorameur dans le forum Administration
    Réponses: 1
    Dernier message: 22/08/2011, 12h48
  3. Création de fichier json avec PHP
    Par versus68 dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2008, 11h56
  4. Réponses: 3
    Dernier message: 29/03/2007, 12h39
  5. [AJAX] Récupération d'un fichier JSON avec javaScript
    Par guerin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/11/2006, 19h05

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