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 :

Lire fichier Json


Sujet :

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

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut Lire fichier Json
    Bonjour,

    J'ai récupéré des fichier json de openstreetmap qui sont sous cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {"id": "75101","citycode": "75101","type": "city","name": "1er Arrondissement","postcode": "75001","lat": "48.859815","lon": "2.340315","city": "1er Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 17.6, "adm_weight": 2, "importance": 0.3844}
    {"id": "75102","citycode": "75102","type": "city","name": "2e Arrondissement","postcode": "75002","lat": "48.866110","lon": "2.340235","city": "2e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 22.4, "adm_weight": 2, "importance": 0.3903}
    {"id": "75103","citycode": "75103","type": "city","name": "3e Arrondissement","postcode": "75003","lat": "48.863523","lon": "2.360715","city": "3e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 35.7, "adm_weight": 2, "importance": 0.4017}
    {"id": "75104","citycode": "75104","type": "city","name": "4e Arrondissement","postcode": "75004","lat": "48.856278","lon": "2.351263","city": "4e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 28.2, "adm_weight": 2, "importance": 0.3959}
    ...
    Je souhaite les lire en java.
    J'avais penser à jackson mais je voit pas comment faire car d'après ce que je vois, le fichier ne contient pas une array, mais pour chaque adresse, c'est un nouvel objet dans une fichier, ce n'est pas un nouvel objet dans une array list.

    Merci de votre aide

  2. #2
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Tu as pensé à faire un split sur la String, en prenant par exemple le caractère }. Ensuite tu le rajoute à la fin de chaque string, et tu as logiquement un String[] qui contient tes objets, parsable un par un avec jackson. Ou alors, tu rajoute [ au début, ] à la fin, tu fait un replace sur les } par }, et tu as un array json...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Comment faire pour la première solution en java surtout que le fichier ressemble plutôt à ceci:

    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": "75101","citycode": "75101","type": "city","name": "1er Arrondissement","postcode": "75001","lat": "48.859815","lon": "2.340315","city": "1er Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 17.6, "adm_weight": 2, "importance": 0.3844}
    {"id": "75102","citycode": "75102","type": "city","name": "2e Arrondissement","postcode": "75002","lat": "48.866110","lon": "2.340235","city": "2e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 22.4, "adm_weight": 2, "importance": 0.3903}
    {"id": "75103","citycode": "75103","type": "city","name": "3e Arrondissement","postcode": "75003","lat": "48.863523","lon": "2.360715","city": "3e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 35.7, "adm_weight": 2, "importance": 0.4017}
    {"id": "75104","citycode": "75104","type": "city","name": "4e Arrondissement","postcode": "75004","lat": "48.856278","lon": "2.351263","city": "4e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 28.2, "adm_weight": 2, "importance": 0.3959}
    {"id": "75105","citycode": "75105","type": "city","name": "5e Arrondissement","postcode": "75005","lat": "48.845442","lon": "2.343222","city": "5e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 61.5, "adm_weight": 2, "importance": 0.4147}
    {"id": "75106","citycode": "75106","type": "city","name": "6e Arrondissement","postcode": "75006","lat": "48.850777","lon": "2.332253","city": "6e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 43.1, "adm_weight": 2, "importance": 0.4062}
    {"id": "75107","citycode": "75107","type": "city","name": "7e Arrondissement","postcode": "75007","lat": "48.857003","lon": "2.319907","city": "7e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 57.4, "adm_weight": 2, "importance": 0.4131}
    {"id": "75108","citycode": "75108","type": "city","name": "8e Arrondissement","postcode": "75008","lat": "48.876772","lon": "2.316921","city": "8e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 40.3, "adm_weight": 2, "importance": 0.4046}
    {"id": "75109","citycode": "75109","type": "city","name": "9e Arrondissement","postcode": "75009","lat": "48.871499","lon": "2.338804","city": "9e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 60.3, "adm_weight": 2, "importance": 0.4143}
    {"id": "75110","citycode": "75110","type": "city","name": "10e Arrondissement","postcode": "75010","lat": "48.871595","lon": "2.356526","city": "10e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 95.9, "adm_weight": 2, "importance": 0.4252}
    {"id": "75111","citycode": "75111","type": "city","name": "11e Arrondissement","postcode": "75011","lat": "48.858221","lon": "2.378499","city": "11e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 152.7, "adm_weight": 2, "importance": 0.4360}
    {"id": "75112","citycode": "75112","type": "city","name": "12e Arrondissement","postcode": "75012","lat": "48.840277","lon": "2.386887","city": "12e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 142.9, "adm_weight": 2, "importance": 0.4345}
    {"id": "75113","citycode": "75113","type": "city","name": "13e Arrondissement","postcode": "75013","lat": "48.832011","lon": "2.354290","city": "13e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 182.0, "adm_weight": 2, "importance": 0.4400}
    {"id": "75114","citycode": "75114","type": "city","name": "14e Arrondissement","postcode": "75014","lat": "48.832753","lon": "2.325672","city": "14e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 137.2, "adm_weight": 2, "importance": 0.4335}
    {"id": "75115","citycode": "75115","type": "city","name": "15e Arrondissement","postcode": "75015","lat": "48.840698","lon": "2.299681","city": "15e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 236.5, "adm_weight": 2, "importance": 0.4459}
    {"id": "75116","citycode": "75116","type": "city","name": "16e Arrondissement","postcode": "75016","lat": "48.863042","lon": "2.276208","city": "16e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 169.4, "adm_weight": 2, "importance": 0.4384}
    {"id": "75117","citycode": "75117","type": "city","name": "17e Arrondissement","postcode": "75017","lat": "48.883989","lon": "2.320918","city": "17e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 168.5, "adm_weight": 2, "importance": 0.4382}
    {"id": "75118","citycode": "75118","type": "city","name": "18e Arrondissement","postcode": "75018","lat": "48.891312","lon": "2.344008","city": "18e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 200.6, "adm_weight": 2, "importance": 0.4422}
    {"id": "75119","citycode": "75119","type": "city","name": "19e Arrondissement","postcode": "75019","lat": "48.882516","lon": "2.380936","city": "19e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 184.8, "adm_weight": 2, "importance": 0.4403}
    {"id": "75120","citycode": "75120","type": "city","name": "20e Arrondissement","postcode": "75020","lat": "48.864621","lon": "2.398869","city": "20e Arrondissement","departement": "Paris", "region": "Île-de-France", "population": 197.1, "adm_weight": 2, "importance": 0.4418}
    {"id": "751010414A","citycode": "75101","type": "street","name": "Rue de l'Arc en Ciel","postcode": "75001","lat": "48.862150","lon": "2.346096","city": "Paris","departement": "Paris", "region": "Île-de-France","importance": 0.0923 ,"housenumbers":{"17": {"lat": 48.862150,"lon": 2.346096}}}
    {"id": "751010891U","citycode": "75101","type": "street","name": "Porte Berger","postcode": "75001","lat": "48.862219","lon": "2.345456","city": "Paris","departement": "Paris", "region": "Île-de-France","importance": 0.0923 ,"housenumbers":{"101": {"lat": 48.862219,"lon": 2.345456}}}

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    en réalité Jackson est tout à fait capable de lire un flux au fur et à mesure, et de ce fait il est tout à fait capable de lire des objets JSON qui se suivent, même si des objets JSON les uns à la suite des autres ça ne fait pas un JSON valide.

    Supposons que je veuille lire le fichier names.json suivant :

    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {"name": "Pierre"}
    {"name": "Paul"}
    {"name": "Jacques"}

    Ce n'est pas du JSON valable, mais ce sont trois objets JSON valables. Même situation donc.

    Je définis d'abord un classe qui représente de tels objets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Person {
      private String name;
     
      public String getName() {
        return name;
      }
     
      public void setName(String name) {
        this.name = name;
      }
    }
    Puis je lis mon fichier comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    JsonFactory factory = new ObjectMapper().getFactory();
    try (JsonParser parser = factory.createParser(new File("names.json"))) {
      while (parser.nextToken() != null) {
        Person person = parser.readValueAs(Person.class);
        System.out.println(person.getName());
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. lire fichier json à partir de vba
    Par vanessa75 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/11/2016, 16h26
  2. Lire fichier JSON dans JavaScript
    Par alaninho dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/03/2013, 07h06
  3. Lire plusieurs fichiers JSON
    Par abel.ludba dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/11/2012, 15h46
  4. Lire un fichier JSON en vb.net FW 1.1
    Par aiglelibre dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/09/2010, 20h34
  5. lire et ecrire dans fichier json
    Par elj_slim dans le forum NetBeans
    Réponses: 0
    Dernier message: 17/08/2010, 13h04

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