CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Java Json

nikkolai
nikkolai
Niveau 10
21 avril 2017 à 11:59:54

Salut à tous.
J'ai un problème sur lequel je bute depuis un peu de temps. Je récupère un fichier Json et ses données. Je les transforme en objets index. Dedans j'ai un variable boolean qui sert à savoir si on a lu cette donnée. Le problème maintenant, c'est que je voudrais réenvoyer ses données dans le fichier Json histoire d'update les données et faire passer le boolean à true. Le soucis, c'est que je sais absolument pas comment ré injecter les données pour un fichier json, idéalement, dans le même fichier. Après, dans le groupe de projet, on est pas totalement sûr de la façon de faire pour indiquer qu'une donnée à été lu, on a décidé de passer avec le bool un peu par défaut. L'idéal du coup, serait de simplement switch la valeur check à true dans le fichier Json.

Si quelqu'un à un exemple de réécriture de données + enregistrement json, je suis preneur, Merci :)

dans le fichier java.
try {
int i=0;1
String url = "indexeur/src/main/resources/Indexes.json";
JsonReader reader = new JsonReader(new InputStreamReader(
new FileInputStream(url)));
JsonParser jsonParser = new JsonParser();
JsonObject userArray = jsonParser.parse(reader).getAsJsonObject();
System.out.println("USERARRAY "+userArray);
JsonArray objets = userArray.getAsJsonArray("Index ");
System.out.println(" Là c'est notre objet "+objets);
List<Index> Indexs = new ArrayList<Index>();
Gson myGson = new Gson();
Gson MyGson2=new Gson();

System.out.println("Moi et mes kheys on part sur la Lune");

for (JsonElement aUser : objets) {
System.out.println(aUser);
Index aPlayer = myGson.fromJson(aUser, Index.class);
Indexs.add(aPlayer);
}

int iz=Indexs.size();
Index[] tab=new Index[iz];
for (Index object : Indexs) {
object.setCheck(true);
System.out.println("url: "+object.getUrl()+" keyWords: "+object.getKeyWords()+" descriptif: "+object.getDescriptif()+object.isCheck());
tab[i]=new Index(object.getUrl(),object.getKeyWords(),object.getDescriptif(),object.isCheck());
System.out.println(" fin d'essai "+Indexs.get(i).getUrl()+" "+Indexs.get(i).isCheck());
i++;
}

--------------------
Le fichier Indexes.json en question:
{

"Index " : [
{
"url":"url 1",
"keyWords":["essai1","essai11"],
"descriptif":"data 1",
"check":false
},
{
"url":"url 2",
"keyWords":["essai2","essai22"],
"descriptif":"data 2",
"check":false
},

MrAnge
MrAnge
Niveau 10
22 avril 2017 à 15:59:35

Bonjour
alors tu fais ton import org.json.JSONObject;

Pour lire un fichier JSON:
JSONObject mp = new JSONObject(result);

JSONObject resultJSON = mp.getJSONObject("Response");

monObjet.setProperties1(resultJSON.getBoolean("Boolean1"));
monObjet.setProperties2(resultJSON.getBoolean("Boolean2"));

Message édité le 22 avril 2017 à 16:02:57 par MrAnge
HowItWorks
HowItWorks
Niveau 10
23 avril 2017 à 10:00:54

Plusieurs questions : pourquoi souhaites-tu mettre à jour le fichier constamment ? N'y-a-t'il pas moyen de tout traiter d'un coup ?

Tu peux charger facilement la totalité du fichier avec Jackson et boucler sur les données recueillies. C'est beaucoup plus simple et demandera énormément moins de code que ce que tu as fait.

Par ailleurs, attention au new InputStreamReader que tu utilises. Avec ton code tu as créé une fuite de ressource (le fichier n'est jamais fermé, et si tu en ouvres plein au bout d'un moment l'application crashera). En java < 7 il faut faire un try/catch autour du code puis fermer la ressource dans un finally.
En java >= 7 tu peux utiliser le try-with-resource.

Message édité le 23 avril 2017 à 10:01:30 par HowItWorks
nikkolai
nikkolai
Niveau 10
24 avril 2017 à 14:15:08

En gros, on veut au chargement envoyer les indexs à différents serveurs. On a placé le boolean dans le cas où si à un moment donné, on rajoute des données et qu'on veut les ré envoyer aux serveurs; on ne réenvoit pas toutes les données, mais seulement les nouvelles.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment