Fichier JSON to string

Fichier JSON to string - Java - Programmation

Marsh Posté le 20-11-2018 à 14:26:59    

Bonjour,
 
Je suis plutôt newbie en programmation Java, et je suis en train de développer un code qui, entre autre, lit le contenu d'un fichier JSON pour le transformer en chaîne de caractère.
 
Exemple:

Code :
  1. {
  2. "toto1":0,
  3. "toto2":1,
  4. "toto3":2
  5. }


 
A transformer en:
 

Code :
  1. "[{\"toto\":0,\"toto2\":1,\"toto3\":2}]"


 
J'ai lu quelques informations sur le net mais ce n'est pas encore très clair pour moi. J'ai néanmoins pondu quelque chose en me basant sur ce lien:
https://www.includehelp.com/java-pr [...] -File.aspx
 
Ce que je ne comprends pas, c'est que mon code (qui est un quasi copié/collé de celui-là) me renvoit une chaîne dont les clés de mon fichier Json ne sont pas dans le même ordre (ce qui est primordial dans mon cas): {"toto3":2,"toto2":1,"toto":0}
 
Autre chose, j'aimerais également qu'il y ai un \ avant les guillemets "; sur le net, je lis des fois que c'est quelque chose de natif en travaillant avec des objets Json et pourtant, je n'arrive pas à comprendre pourquoi je ne les affiche pas. J'ai l'impression qu'il me manque des éléments.
 
Sur tous ces points, merci d'avance de votre aide.


---------------
Profil D3
Reply

Marsh Posté le 20-11-2018 à 14:26:59   

Reply

Marsh Posté le 21-11-2018 à 16:14:20    

L'ordre des clés est arbitraire en JSON (cf. les spécifications).
 
Donc si tu lis ton fichier avec une bibliothèque Java qui va le transformer dans sa représentation interne (JSONObject sur la page de ton lien), puis tu convertis cette structure de données vers une chaîne de caractères, rien ne garantit que l'ordre des clés soit conservé.
 
Mais ta question initiale se résume à de la manipulation de texte, donc tu n'as pas besoin de faire tout ça. Tu cherches à faire quoi exactement?


---------------
click clack clunka thunk
Reply

Marsh Posté le 21-11-2018 à 16:51:36    

:jap:
S'il y a un côté aléatoire, alors je ne comprends pas pourquoi le résultat qui m'est retourné est toujours le même (inverse de celui du contenu de mon fichier Json).
 
Ce que je cherche à faire tout simplement c'est, à partir d'un fichier Json, en récupérer le contenu (quelque soit sa structure et tel qu'il existe dans le fichier; je ne veux pas juste récupérer les valeurs de mes clés mais bien TOUT le contenu du fichier, avec les accolades, les clés, les valeurs, les caractère spéciaux etc...) dans une variable de type string dans un code Java.
 
Si je reprends mon exemple ci-dessus - le contenu de mon fichier JSON.txt :
 

Code :
  1. {
  2. "toto1":0,
  3. "toto2":1,
  4. "toto3":2
  5. }


 
A transformer en :
 

Code :
  1. JsonContent = "[{\"toto\":0,\"toto2\":1,\"toto3\":2}]";


Message édité par Le Taz le 21-11-2018 à 16:55:07

---------------
Profil D3
Reply

Marsh Posté le 21-11-2018 à 17:13:52    

Arbitraire c'est pas aléatoire, le fonctionnement interne de JSONObject est très certainement déterministe. :D
Mais c'est un détail d'implémentation justement, et tu ne devrais pas t'appuyer dessus.
 

Code :
  1. /tmp$ cat > JSON.txt << EOF
  2. > {
  3. > "toto1":0,
  4. > "toto2":1,
  5. > "toto3":2
  6. > }
  7. > EOF
  8. jshell> File file = new File("JSON.txt" )
  9. file ==> JSON.txt
  10. jshell> String JsonContent = Files.lines(file.toPath()).map(line -> line.trim().replaceAll("\"", "\\\"" )).collect(Collectors.joining("", "[","]" ))
  11. JsonContent ==> "[{\"toto1\":0,\"toto2\":1,\"toto3\":2}]"


---------------
click clack clunka thunk
Reply

Marsh Posté le 21-11-2018 à 17:42:10    

Merci de ton aide; cependant, je ne retrouve pas exactement le même résultat que toi; en effet, je n'ai pas les backslash.


---------------
Profil D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed