CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Java Json

DébutPage précedente
1
Page suivantePage suivante
nikkolai nikkolai
MP
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
MP
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
MP
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
MP
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.

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment