Partage
  • Partager sur Facebook
  • Partager sur Twitter

Json->JS

Sujet résolu
    13 février 2019 à 9:55:18

    Bonjour,

    Voilà j'ai un problème avec mon json je n'arrive pas à le travailler j'ai recherché pas mal d'information sur internet mais rien ne trouve qui fonctionne.

    J'ai récupéré dans ma table des vidéos que j'ai json_encode ce qui mon donné ce résultat.

    [[{"titre":"video1","url":"C0DPdy98e4c"}],[{"titre":"video2","url":"C0DPdy98e4c"}],[{"titre":"video3","url":"C0DPdy98e4c"}]]

    J'ai essayé d'utiliser je json.encode mais valeur undefined.

    Comment faire pour récupérer mes titre et mes url.

    Voici mon code :

    <script type="text/javascript">
            <!--
            var test ='test'
            var json =( '<?=$json ?>' );
            document.write(json);
            obj = JSON.parse(json.url);
            console.log(obj.url);
            //-->
        </script>



    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2019 à 10:01:12

      Tu n'a pas besoin de le parser étant donné que ce n'est pas un objet.

      Fait un console.log de ça

      [[{"titre":"video1","url":"C0DPdy98e4c"}],[{"titre":"video2","url":"C0DPdy98e4c"}],[{"titre":"video3","url":"C0DPdy98e4c"}]]
      

      Et tu verra que js l'aura déjà interprété comme un array 

      Si tu veux quand même le parser essai 

      JSON.parse(JSON.stringify(....));




      -
      Edité par Jessydan38 13 février 2019 à 10:03:18

      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2019 à 10:13:47

        Merci déjà d'avoir répondu,

        Si je fais un console.log de sa me renvoie exactement ça. 

        [[{"titre":"video1","url":"C0DPdy98e4c"}],[{"titre":"video2","url":"C0DPdy98e4c"}],[{"titre":"video3","url":"C0DPdy98e4c"}]]

        Mais quand je veut parser pour récupérer mon titre ou url dans la console cela me mes undifined  :/

        • Partager sur Facebook
        • Partager sur Twitter
          13 février 2019 à 10:21:49

          Bonjour,

          Comme te l'as dit Jessydan38, tu n'as pas besoin de parser pour récupérer le titre et l'url.

          JavaScript se charge de parser le json et te retourne un array.

          Etant donné que tu as un tableau à double dimensions, tu peux faire ce code:

          for (i = 0; i < ton_tableau.length; i++)
          {
              alert(ton_tableau[i]->title);
          }



          • Partager sur Facebook
          • Partager sur Twitter
          "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
            13 février 2019 à 10:21:56

            Etrange, j'ai pris ton objet et essayé dans un codepen ça m'affiche bien un array dans la console.

            https://codepen.io/anon/pen/jdpVPL

            • Partager sur Facebook
            • Partager sur Twitter
              13 février 2019 à 10:33:10

              un json format de donné qui peut être un string contenant un objet/array javascript, pour y accéder il sera nécessaire de le parser.
              // ça c'est un json
              let jsonVar = "[[{\"titre\":\"video1\",\"url\":\"C0DPdy98e4c\"}],[{\"titre\":\"video2\",\"url\":\"C0DPdy98e4c\"}],[{\"titre\":\"video3\",\"url\":\"C0DPdy98e4c\"}]]";
              
              console.log( jsonVar )
              

              dans ton cas, tu as json non signifié, il est donc directement interprété par javascript. 

              let obj = [[{"titre":"video1","url":"C0DPdy98e4c"}],[{"titre":"video2","url":"C0DPdy98e4c"}],[{"titre":"video3","url":"C0DPdy98e4c"}]]

              Comme l'a dit @Jessydan38 dans ton cas c'est n'est pas un json sous forme de string mais un objet donc tu n'as pas besoin de parser le truc.

              Si tu veux le titre de la première vidéo :

              console.log( obj[ 0 ][ 0 ].titre );



              -
              Edité par ox223252 13 février 2019 à 10:40:07

              • Partager sur Facebook
              • Partager sur Twitter

              la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

              Mon GitHub

                13 février 2019 à 10:41:26

                j'ai essayer vos 2 méthode et quand moi je fais sa donne sa.

                J'ai peut être fais une erreur de code voila le code 

                <script type="text/javascript">
                        <!--
                        var json =('<?=$json ?>');
                        document.write(json);
                        for (i = 0; i < json.length; i++)
                        {
                            alert(json[i]->titre);
                        }
                    console.log(json[0][0].titre);
                        console.log(obj.url);
                        //-->
                    </script>



                • Partager sur Facebook
                • Partager sur Twitter
                  13 février 2019 à 10:49:37

                  Bonjour,

                  '<?=$json ?>' c'est pas du json ça, c'est juste une chaine de caractère qui ne veut rien dire. Tu veux faire quoi avec ça ? du php ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 février 2019 à 10:59:25

                    Comme j'ai dit mon $json et du json_encode que j'ai faits en php pour me donne toutes mes vidéos et me les donnés en json et donc moi je veux pouvoir grâce à ça repérer mes titres et URL 1 par 1 en javascript.

                    ox22352 si je fais se que tu as dis comme mon résultat plus haut j'obtient undefined

                    -
                    Edité par KiriFlyne 13 février 2019 à 11:03:40

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 février 2019 à 11:20:03

                      Fais un print de ta variable json juste après la première ligne pour voir ce qu'il y a dedans

                      Et essai de remplacer ton <?=$json?> par <?php echo $json; ?>

                      -
                      Edité par Jessydan38 13 février 2019 à 11:22:16

                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 février 2019 à 11:24:20

                        Voila sa ne change pas.

                        console

                        <!-- var json =('[[{"titre":"video1","url":"C0DPdy98e4c"}],[{"titre":"video2","url":"C0DPdy98e4c"}],[{"titre":"video3","url":"C0DPdy98e4c"}]]'); 

                         Si je fait un document.write(json)

                        [[{"titre":"video1","url":"C0DPdy98e4c"}],[{"titre":"video2","url":"C0DPdy98e4c"}],[{"titre":"video3","url":"C0DPdy98e4c"}]]"

                        -
                        Edité par KiriFlyne 13 février 2019 à 11:29:57

                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 février 2019 à 11:28:55

                          ça c'est pas bon :
                          var json =('<?=$json ?>');

                          ça ne veux rien dire, c'est :

                          var json = <?php echo $json; ?>; // ça c'est un obj javascript 

                          tu na pas besoin de parser le bouzin, suffira d'y acceder

                          -
                          Edité par ox223252 13 février 2019 à 11:29:48

                          • Partager sur Facebook
                          • Partager sur Twitter

                          la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

                          Mon GitHub

                            13 février 2019 à 11:29:39

                            C'est a cause de tes guillemets, si tu les met ça va interpréter ça comme une string.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 février 2019 à 11:36:42

                              Ok comme sa sa marche merci bcp et j'abuse encore de votre temps et générosité

                              Mais comment je fait pour recupere tous 1 par 1 

                              var titre = video1  

                              var url =C0DPdy98e4c

                              Jusqu’à la fin je fais le for vue plus haut ?

                              -
                              Edité par KiriFlyne 13 février 2019 à 11:37:18

                              • Partager sur Facebook
                              • Partager sur Twitter
                                13 février 2019 à 11:53:09

                                le plus simple c'est :
                                let data = …;
                                
                                data.forEach( (item) =>
                                {
                                   let title = item[ 0 ].title;
                                   let url = item[ 0 ].url;
                                });
                                par contre revois peut être la génération du json, pour éviter le tableau de tableau :D
                                • Partager sur Facebook
                                • Partager sur Twitter

                                la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

                                Mon GitHub

                                Json->JS

                                × 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