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 :

Comment écrire et supprimer dans un fichier JSON avec fasterXML jackson


Sujet :

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

  1. #1
    Invité
    Invité(e)
    Par défaut Comment écrire et supprimer dans un fichier JSON avec fasterXML jackson
    Bonjour à tous,
    mon problème est simple.
    J'ai un fichier JSON dans lequel je veux pouvoir écrire et supprimer des clés et des valeurs.
    Le problème avec le code ci-dessous, c'est que je n'ai aucun message d'erreur mais aussi aucune écriture ou suppression dans mon fichier.
    Je pense mal utiliser les méthodes...

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public class test {
     
    	public static void main(String[] args) {
     
    		JsonFactory jsonFactory = new JsonFactory();
    		ObjectMapper mapper = new ObjectMapper(jsonFactory);
     
    		ObjectNode rootNode = null;
    		JsonParser jsonParser;
    		String data = null;
    		String etdhs = null;
    		File jsonFile = new File(args[0]);
    		System.out.println(jsonFile);
     
    		try {
    			jsonParser = jsonFactory.createParser(jsonFile);
    			rootNode = mapper.readTree(jsonParser);
    			JsonNode pathsTestbook = rootNode.get("paths");
    			// Récupération de la valeur de la clé "data"
    			data = pathsTestbook.get("data").textValue();
     
    			// Ecriture d'une clé/valeur
    			rootNode.put("dark", "vador");
     
    			// Suppresion d'une clé/valeur dans un document JSON.
    			rootNode.remove("data");
     
    		} catch (IOException e) {
    			System.err.println("Error when parsing file '"
    					+ jsonFile.getAbsoluteFile() + "': " + e.getMessage());
    			System.exit(1);
    		}
     
    	}
    }

  2. #2
    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,

    je vois une ligne qui sert à lire ton fichier, mais je ne vois rien qui essaie d'écrire dedans.

    Jackson va te mener la vie dure pour ce que tu essaies de faire. Les points forts de Jackson sont :
    - le databinding. Mais tu ne fais pas de databinding.
    - la rapidité/efficacité. Mais elle rend très compliqué le fait de modifier légèrement un document JSON. Ce n'est pas fait pour.

    Ça ne t'aidera pas.

    A moins que tes fichiers JSON ne soient gigantesques (auquel cas, ben, c'est pas bon, parce que pour modifier un fichier il faut le réécrire en entier dans un autre fichier à côté, puis effacer l'original,) et que tu aies vraiment besoin de Jackson, ce serait plus simple d'utiliser une bibliothèque JSON basique, genre json.org ou json-lib ou un truc de ce genre. Pas ou peu de databinding, des objets JSON lus et écrits en entier.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse thelvin

    Bon finalement j'ai trouvé la solution à mon problème. Je partage le code pour les prochains

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class test {
     
    	public static void main(String[] args) {
     
    		JsonFactory jsonFactory = new JsonFactory();
    		ObjectMapper mapper = new ObjectMapper(jsonFactory);
     
    		ObjectNode rootNode = null;
    		JsonParser jsonParser;
    		String data = null;
    		String test = null;
    		File jsonFile = new File(args[0]);
    		System.out.println(jsonFile);
     
    		try {
    			jsonParser = jsonFactory.createParser(jsonFile);
    			rootNode = mapper.readTree(jsonParser);
    			JsonNode pathsTestbook = rootNode.get("paths");
    			// Récupération de la valeur de la clé "data"
    			data = pathsTestbook.get("data").textValue();
     
    			// Ecriture d'une clé/valeur
                            ObjectNode node = (ObjectNode) rootNode.with("test");
    			node.put("dark", "vador");
     
    			// Suppresion d'une clé/valeur dans un document JSON.
    			node.remove("dark");
     
    		} catch (IOException e) {
    			System.err.println("Error when parsing file '"
    					+ jsonFile.getAbsoluteFile() + "': " + e.getMessage());
    			System.exit(1);
    		}
     
    	}
    }

  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
    Ben, chez moi ça ne modifie pas du tout le fichier et donc ça ne peut pas aider quelqu'un qui se pose la même question...

    Mais si toi tu es content du résultat, très bien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Enregistrer des données dans un fichier JSON avec Gson
    Par hamrouni wassim dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 29/03/2015, 14h01
  2. [AJAX] Ecriture dans un fichier json avec une requête AJAX
    Par DarkPoster14 dans le forum jQuery
    Réponses: 1
    Dernier message: 10/07/2012, 09h45
  3. Réponses: 4
    Dernier message: 30/05/2012, 16h47
  4. Réponses: 2
    Dernier message: 08/10/2009, 13h23
  5. Réponses: 7
    Dernier message: 17/08/2006, 14h37

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