Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer et traiter les donner d'un fichier JSON

Ruby

    2 décembre 2018 à 17:23:36

    Salut, j'aimerais récupérer les données d'un fichier JSON et pouvoir les afficher,

    Voici mon code : 

    Mon fichier avec mes class, objet et méthode :

    require"json"
    
    class Contact
    
      attr_accessor :nom, :numero
    
    
      def initialize(*args)
        @nom = args[0]
        @numero = args[1]
      end
    
      def sauvegarde
        memberInfo = {nom: @nom, numero: @numero}.to_json
        open("contact.json", "a") do |fichier|
          fichier.puts memberInfo
        end
      end
    
    end
    

    Et le fichier run : 

    require_relative"./contact.rb"
    
    puts "Souhaitez vous ajoutez un nouveau contact ? (Y/N)"
    answer = gets.chomp.upcase
    
    while answer == "Y"
      puts "Entrez le nom du contact :"
      nom = gets.chomp.capitalize
      puts "Entrez le numéro du contact :"
      numero = gets.chomp
    
      newMember = Contact.new(nom, numero)
    
      newMember.sauvegarde
    
      if answer != "Y"
        puts "D'accord au revoir"
        break
      end
    
      puts "Desirez vous ajoutez encore un contact ? (Y/N)"
      answer2 = gets.chomp.upcase
    
      if answer2 != "Y"
        break
      end
    end
    

    Les informations sont donc récupérer et stocker dans "contact.json"

    Et j'aimerais pouvoir afficher ce qui est stocké !

    Merci d'avance ;) 


    -
    Edité par CosmeGressier 3 décembre 2018 à 16:30:19

    • Partager sur Facebook
    • Partager sur Twitter
    En apprentissage pour devenir Développeur Free-lance ;)
      3 décembre 2018 à 13:21:50

      Ajoute dans le titre le langage que tu utilises.

      Et tant que tu y es corrige "et traité" par "et traiter".

      • Partager sur Facebook
      • Partager sur Twitter
        3 décembre 2018 à 16:21:40

        Hello,

        Ton code n'est pas évolutif

        Ta classe contact devrais ressembler a ceci:

        class Contact
          def initialize(name:, number:)
            @name = name
            @number = number
          end
        
          def to_h
            {
              name: @name,
              number: @number
            }
          end
        end
        

        Evite aussi le franglais.

        Il te faut une classe de sauvegarde et une classe de chargement

        class ContactSaver
          def initialize(filename)
            @filename = filename
          end
        
          def call(contacts)
            File.open(filename, "w") do |file|
              file.puts contacts.map(&:to_h).to_json
            end 
          end
        end
        
        class ContactLoader
          def call(filename)
            extract_json(filename).map do |contact_hash|
              Contact.new name: contact_hash['name'], number: contact_hash['number']
            end
          end
        
          private def extract_json(filename)
            JSON.parse(File.read(filename))
          end
        end
        

        Je ne suis pas sur que le code fonctionne car je viens de l'ecrire sur l'editeur.



        • Partager sur Facebook
        • Partager sur Twitter

        Architecte logiciel - Software craftsmanship convaincu.

          3 décembre 2018 à 16:47:24

          Merci :) 

          Il faut enlever les deux point dans les paramètres de la méthode initialize, a part ça merci beaucoup

          et une dernière petite question, comment me servir de ses classes pour afficher le résultat ? 

          Qu'esceque je mets dans mon fichier run.rb ? J'ai essayer plusieurs chose comme puts et le nom des méthodes, j'ai essayé .inspect aussi.

          • Partager sur Facebook
          • Partager sur Twitter
          En apprentissage pour devenir Développeur Free-lance ;)
            3 décembre 2018 à 17:22:00

            > Il faut enlever les deux point dans les paramètres de la méthode initialize, a part ça merci beaucoup

            Au contraire, c'est bien plus propre de nomer des propriete, ce ne sont pas de simples arguments.

            Pour l'affichage. tu peux te faire une petite classe qui ouvre un contact (to_h) et qui vas formater la sortie avec un StringIO

            T'aura plus qu'a l'afficher avec un puts.

            Pour utiliser le code, bah tu fait des instances et tu appelles les bonnes methodes.

            Tu apprend ruby avec quel support?

            • Partager sur Facebook
            • Partager sur Twitter

            Architecte logiciel - Software craftsmanship convaincu.

              3 décembre 2018 à 17:43:59

              Dac merci je vais essayé tout ça mais c'est un peux galère pour mon niveau :)

              J'apprend sur Youtube et OpenClassroom, esceque tu a des conseils sur ou apprendre Ruby ? 

              Parce-que je trouve que les cours en français ne sont pas très pousser.  

              • Partager sur Facebook
              • Partager sur Twitter
              En apprentissage pour devenir Développeur Free-lance ;)

              Récupérer et traiter les donner d'un fichier JSON

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown