Utiliser json_encode et json_decode plutôt que explode - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Utiliser json_encode et json_decode plutôt que explode (/showthread.php?tid=900) Pages :
1
2
|
Utiliser json_encode et json_decode plutôt que explode - Sephi-Chan - 24-12-2010 Hello, Dans les jeux par navigateur, il arrive qu'on souhaiter stocker des informations sans structure particulière. Souvent, les développeurs débutants font ça en formatant les informations sous forme d'une chaîne de caractères, en utilisant une notation de leur cru, par exemple :
Puis après, ces développeurs disent : on va utiliser explode pour récupérer les informations ! En fait, c'est une bien mauvaise idée. Cette façon de stocker des données sous forme d'une chaîne existe depuis longtemps. Ça s'appelle la sérialisation (aussi appelé marshalling) et il y a déjà des outils pour faire. Parmi ces outils il y a JSON (http://json.org/), qui permet de représenter des données sous forme d'objet Javascript. L'avantage de JSON (par rapport à une sérialisation maison) est qu'il supporte les nombres, les chaînes, les valeurs null, les booléen, les tableaux et les hash (tableau associatif). Par exemple, l'équivalent des informations données plus haut sous forme d'une chaîne pourrait être :
L'autre avantage de JSON, c'est que tous les langages savent le produire. Dans le cas de PHP, il y a même des fonctions natives (donc performantes) pour produire du JSON (retourné sous forme d'une chaîne de caractère). Exemple :
M'affiche à l'écran :
Et on peut très facilement faire l'inverse, transformer cette chaîne en un objet (de la classe StdClass) ou un tableau :
Nous donne :
Et tout ça, sans avoir à se soucier de la manière dont nous récupérons nos données ! Ça peut être des tableaux imbriqués, des entiers, des true, des false, etc. Ça fonctionne ! Voilà pourquoi je vous suggère d'oublier explode et d'utiliser json_encode/json_decode. Pour compléter ça, il faudrait fournir des cas d'utilisations de telles données : il ne faut pas utiliser cette technique pour tout et n'importe quoi. Souvent, il est plus pertinent d'utiliser des colonnes appropriées dans la table ou une relation many-to-many. Sephi-Chan RE: Utiliser json_encode et json_decode plutôt que explode - Globe - 24-12-2010 Merci beaucoup Sephi, très instructif pour les mecs comme moi qui codent pas des masses et qui n'ont jamais vraiment suivi de cours =) RE: Utiliser json_encode et json_decode plutôt que explode - Sephi-Chan - 24-12-2010 Hélas, c'est pas le genre de truc qu'on apprend en cours. Ce qui vient des cours est rarement utile… -.- Sephi-Chan RE: Utiliser json_encode et json_decode plutôt que explode - atra27 - 24-12-2010 Sinon y a la fonction serialize() en php C'est natif a php, sa existait avant json et sa garde toutes les propriétés des valeurs du tableau, même si c'est un objet... Donc si c'est pour stocker quand on doit le retraiter ensuite par php, c'est la meilleure solution. Si c'est pour traiter ensuite en JS, json est bien mieux. A juger au cas par cas. RE: Utiliser json_encode et json_decode plutôt que explode - djidi - 24-12-2010 C'est d'ailleurs ce que je me demandais. Quel est le plus performant entre serialise et json_encode ? RE: Utiliser json_encode et json_decode plutôt que explode - Sephi-Chan - 24-12-2010 En fait, serlialize n'est bon que pour sérialiser des objets, afin de récupérer la classe de l'objet. Pour le reste (des tableaux, des chaînes, des hash, etc.), passer par JSON est plus intéressant pour plusieurs raisons :
Sephi-Chan RE: Utiliser json_encode et json_decode plutôt que explode - djidi - 24-12-2010 Ok merci. RE: Utiliser json_encode et json_decode plutôt que explode - Holy - 05-01-2011 Faut quand même préciser que json_encode et json_decode ne fonctionnent qu'avec un encodage en UTF-8. Ce qui peut être très problématique. Sinon en termes de perf, je me souviens que si globalement les méthodes json étaient plus rapides, c'était surtout à l'encodage ou au décodage (l'une des deux opérations donc) et que ça dépendait aussi de la taille du tableau à sérialiser. Donc prudence quand même, même si c'est intéressant A titre perso, j'utilise depuis très longtemps serialize(), je serais bien passé au json si c'était pas encodé obligatoirement en UTF-8. RE: Utiliser json_encode et json_decode plutôt que explode - Viciousity - 05-01-2011 Ben l'UTF-8 est presque une norme maintenant ... :S RE: Utiliser json_encode et json_decode plutôt que explode - Holy - 05-01-2011 (05-01-2011, 02:39 AM)Viciousity a écrit : Ben l'UTF-8 est presque une norme maintenant ... :SDans le monde francophone, y a encore beaucoup de personnes qui ont des bases de données en iso et dont les pages sont de l'iso. Il vaut mieux le savoir quand on veut utiliser json ^^ |