MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Lire un fichier JSON et l'afficher dans un GUI

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    14 Messages 3 Publieurs 722 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • ? Hors-ligne
      Un Ancien Utilisateur
      dernière édition par

      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"
      }
      
      1 réponse Dernière réponse Répondre Citer 0
      • AmaA Hors-ligne
        Ama
        dernière édition par

        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."
          ]
        }
        

        Si je t'ai filé un coup de main n'oublie pas le + / -
        Par contre évite les demandes d'aides en MP, tu sera sympa'

        La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

        Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

        1 réponse Dernière réponse Répondre Citer 1
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          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).

          1 réponse Dernière réponse Répondre Citer 0
          • ? Hors-ligne
            Un Ancien Utilisateur
            dernière édition par

            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

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

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

              1 réponse Dernière réponse Répondre Citer 0
              • ? Hors-ligne
                Un Ancien Utilisateur
                dernière édition par Un Ancien Utilisateur

                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.

                1 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par robin4002

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

                  1 réponse Dernière réponse Répondre Citer 0
                  • ? Hors-ligne
                    Un Ancien Utilisateur
                    dernière édition par Un Ancien Utilisateur

                    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;
                    
                    }
                    
                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      Les variables ne doivent pas être static.

                      1 réponse Dernière réponse Répondre Citer 0
                      • ? Hors-ligne
                        Un Ancien Utilisateur
                        dernière édition par

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

                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002R Hors-ligne
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                          dernière édition par

                          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.

                          1 réponse Dernière réponse Répondre Citer 0
                          • AmaA Hors-ligne
                            Ama
                            dernière édition par

                            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."
                              ]
                            }
                            

                            Si je t'ai filé un coup de main n'oublie pas le + / -
                            Par contre évite les demandes d'aides en MP, tu sera sympa'

                            La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                            Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                            1 réponse Dernière réponse Répondre Citer 1
                            • ? Hors-ligne
                              Un Ancien Utilisateur
                              dernière édition par

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

                              1 réponse Dernière réponse Répondre Citer 1
                              • AmaA Hors-ligne
                                Ama
                                dernière édition par

                                Nickel !

                                Si je t'ai filé un coup de main n'oublie pas le + / -
                                Par contre évite les demandes d'aides en MP, tu sera sympa'

                                La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                                1 réponse Dernière réponse Répondre Citer 0
                                • ? Hors-ligne
                                  Un Ancien Utilisateur
                                  dernière édition par

                                  Ce message a été supprimé !
                                  1 réponse Dernière réponse Répondre Citer 0
                                  • 1 / 1
                                  • Premier message
                                    Dernier message
                                  Design by Woryk
                                  ContactMentions Légales

                                  MINECRAFT FORGE FRANCE © 2024

                                  Powered by NodeBB