Lire un fichier JSON et l'afficher dans un GUI



  • Bonjour,
    Je voudrais lire un fichier JSON depuis un lien (http://........./config.json) puis l'afficher dans le main menu de minecraft mais je ne sais pas comment faire pour le lire puis l'afficher. Par contre j'ai déjà fait des modifications dans le main menu de minecraft.

    Voici le fichier JSON:

    {
        "News": "NEWS",
        "Maintenance": "false",
        "MaintenanceNews": "MAINTENANCE NEWS"
    }
    


  • Je pratique les json avec gson depuis un petit moment maintenant.
    Donc.
    Je vais réécrire deux trois trucs.
    Toujours en partant de cette base de fichier json.

    {
        "News": "NEWS",
        "Maintenance": "false",
        "MaintenanceNews": "MAINTENANCE NEWS"
    }
    
    public class ConfigMod {
    	
    //Au diable le static. Utilises les getters et setters
    
    //Ces valeurs doivent être de la même orthographe que dans ton json.
    //Sinon, serializes les avec un autre nom.
    @SerializedName("News") // <- Clé dans dans le fichier JSON
    private String news;
    
    @SerializedName("Maintenance")
    private  boolean maintenance;
    
    @SerializedName("MaintenanceNews")
    private  String maintenanceNews;
     
    public String getNews() { return news; }
    
    public boolean getMaintenance() { return maintenance; }
    
    public String getMaintenanceNews() { return maintenanceNews; }
    }
    

    Comme tu peux le voir j'utilise le boolean dans sa juste mesure.
    En Boolean et pas en String.

    Du coup je fichier json resemble à ça désormais.

    {
        "News": "NEWS",
        "Maintenance": false,
        "MaintenanceNews": "MAINTENANCE NEWS"
    }
    

    Le reste de la lecture du fichier me semble correcte.

    Tips: Si le texte de maintenance est sur plusieurs ligne, utilise une array de texte, ce sera plus sympa.

    {
      "News": "NEWS",
      "Maintenance": false,
      "MaintenanceNews": [
        "Ma première ligne !",
        "Ma seconde ligne de News de Maintenance."
      ]
    }
    


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonjour,

    Dans mon tutoriel sur la personnalisation du menu principale j'ai monté comment ajouter un texte défilant lu depuis une requête http : https://www.minecraftforgefrance.fr/topic/4205/modifier-le-menu-principal#ajouter-un-texte-défilant

    Tu peux reprendre le même code pour la requête http. Ensuite pour parser le json obtenu, tu peux utiliser la bibliothèque gson (qui est déjà intégré à Minecraft, puis qu'utilisé pour lire les jsons des modèles).



  • J'ai repris le code pour la requête http comme tu m'as dit mais après je ne comprend pas comment récupérer le contenu de les variables de mon fichier JSON avec gson


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bha faut faire un peu de recherche, ce n'est pas compliqué : https://www.mkyong.com/java/how-to-parse-json-with-gson/



  • J'ai un problème à la ligne 13:

            new Thread() {
    
                @Override
                public void run() {
                    
                	try {
    
                        URL url = new URL("http://...../config.json");
                        InputStream is = url.openStream();
                        String json = CharStreams.toString(new InputStreamReader(is, Charsets.UTF_8));
    
                        ConfigMod configmod = gson.fromJson(json, ConfigMod.class);
                    	
                    	if(ConfigMod.maintenance == "true") {
                    	
                    		GuiCustomMainMenu.this.scrollingText = ConfigMod.maintenancenews;
                		
                    	} else {
                    		
                    		GuiCustomMainMenu.this.scrollingText = ConfigMod.news;
                    		
                    	}
    
                    } catch(Exception e) {
    
                        GuiCustomMainMenu.this.scrollingText = "Impossible de lire les news!";
    
                    }
    
                }
    
            }.start();
    

    Cette ligne n'enregistre pas les variables du fichier JSON dans la class ConfigMod car il faut mettre un <Type> mais je ne sais pas quel Type mettre pour que cela écrive les variables du String du fichier JSON que je récupère dans la class ConfigMod.


  • Moddeurs confirmés Rédacteurs Administrateurs

    C'est à quel endroit qu'il demande d'ajouter le type ? Envoies aussi le code de ta classe ConfigMod.



  • Il me demande type après le String json dans la variable fromJson:
    ConfigMod configmod = gson.fromJson(json, ICI);

    Le code de ma classe ConfigMod:

    public class ConfigMod {
    	
        public static String news;
        public static String maintenance;
        public static String maintenancenews;
    
    }
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    Les variables ne doivent pas être static.



  • J'ai enlevé static des variables mais maintenant le problème vient des "ConfidMod.news", "ConfigMod.maintenance" et "ConfigMod.maintenancenews" qui ont une erreur.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bha oui, tu essaies d'accéder à ces variables comme s'il était static ...
    Il faut passer par l'instance de la classe, donc par ta variable configmod.

    Va falloir revoir la base de Java si tu es bloqué par ce genre de chose.



  • Je pratique les json avec gson depuis un petit moment maintenant.
    Donc.
    Je vais réécrire deux trois trucs.
    Toujours en partant de cette base de fichier json.

    {
        "News": "NEWS",
        "Maintenance": "false",
        "MaintenanceNews": "MAINTENANCE NEWS"
    }
    
    public class ConfigMod {
    	
    //Au diable le static. Utilises les getters et setters
    
    //Ces valeurs doivent être de la même orthographe que dans ton json.
    //Sinon, serializes les avec un autre nom.
    @SerializedName("News") // <- Clé dans dans le fichier JSON
    private String news;
    
    @SerializedName("Maintenance")
    private  boolean maintenance;
    
    @SerializedName("MaintenanceNews")
    private  String maintenanceNews;
     
    public String getNews() { return news; }
    
    public boolean getMaintenance() { return maintenance; }
    
    public String getMaintenanceNews() { return maintenanceNews; }
    }
    

    Comme tu peux le voir j'utilise le boolean dans sa juste mesure.
    En Boolean et pas en String.

    Du coup je fichier json resemble à ça désormais.

    {
        "News": "NEWS",
        "Maintenance": false,
        "MaintenanceNews": "MAINTENANCE NEWS"
    }
    

    Le reste de la lecture du fichier me semble correcte.

    Tips: Si le texte de maintenance est sur plusieurs ligne, utilise une array de texte, ce sera plus sympa.

    {
      "News": "NEWS",
      "Maintenance": false,
      "MaintenanceNews": [
        "Ma première ligne !",
        "Ma seconde ligne de News de Maintenance."
      ]
    }
    



  • Bonjour,
    Merci j'ai modifié mon code et maintenance ça marche.



  • Nickel !


Log in to reply