JeuWeb - Crée ton jeu par navigateur
[JSON] Exemple d'utilisation - 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 : [JSON] Exemple d'utilisation (/showthread.php?tid=360)

Pages : 1 2


[JSON] Exemple d'utilisation - Sephi-Chan - 10-04-2008

Salut à tous,

Je poste ce petit message pour donner à ceux qui ne connaissent pas un exemple d'utilisation du format de données JSON (pour Javascript Object Notation).

JSON est donc une façon d'écrire des données, tout comme le permet XML ou YAML.

Je l'ai utilisé pour créer une petite interface graphique qui me permet de définir les paramètres d'une application dans un tableau PHP généré à partir d'un formulaire. Démonstration de l'application.

Cela permet de gagner un peu de temps : le script peut utiliser le tableau PHP sans avoir à parser un quelconque fichier. On peut assimiler ça à un cache.

Dans mon cas, JSON se trouve entre le formulaire et le fichier PHP généré.

Voici le script utilisé. Je précise qu'il n'est pas du tout sécurisé, la démarche est purement didactique.

Au chargement de la page, je teste si POST a été soumis. Si oui, je génère un fichier PHP qui définit une variable $configuration qui contient le code PHP nécessaire à PHP pour générer la superglobale POST donné par la fonction var_export() (l'argument TRUE sert à retourner la chaîne plutôt qu'à l'afficher).

Ensuite, je remets à jour le fichier texte en transformant le tableau POST en une chaîne JSON grâce à json_encode().

Code PHP :
<?php 
if(!empty($_POST)){
file_put_contents('configuration.php', '<?php $configuration = ' . var_export($_POST, TRUE) . "; ?>");
file_put_contents('configuration.txt', json_encode($_POST));
header('Location: edit.php');
}

Dans tous les cas, je génère le formulaire (à partir du fichier texte au format JSON) :
Code PHP :
<?php 
$json
= file_get_contents("configuration.txt");
$jsonArray = json_decode($json, TRUE);

echo
'<form action="edit.php" method="post">';
echo
'<table><caption>Éditer les paramètres</caption>';
echo
'<tr><th>Paramètre</th><th>Valeur</th></tr>';

foreach(
$jsonArray as $parameter => $value){
echo
'<tr>';
echo
'<td><label for="'.$parameter.'">'.$parameter.'</label></td>';
echo
'<td><input type="text" name="'.$parameter.'" id="'.$parameter.'" value="'.$value.'" /></td>';
echo
'</tr>';
}

echo
'<tr class="submit"><td colspan="2">';
echo
'<input type="submit" value="Regénérer le fichier" />';
echo
'</td></tr>';
echo
'</table>';
echo
'</form>';

Vous l'aurez sans doute compris : JSON n'est pas indispensable : j'aurai pu générer le formulaire à partir du tableau directement, mais cela était moins pratique. Ici, json_encode() et json_decode() m'apportent un confort supplémentaire.

Ce n'est qu'un exemple d'utilisation, mais il y en a bien d'autres. Je par exemple m'en servir pour codifier les effets des sortilèges de Seelies.


Sephi-Chan


RE: [JSON] Exemple d'utilisation - naholyr - 11-04-2008

à noter : json_encode() est une fonction ultra-performante (bien plus que n'importe quel foreach, et presque autant que serialize()).

C'est bon à savoir, car on peut imaginer pas mal de choses qui pourraient être générées côté client par Javascript permettant de gagner :
- de la bande passante (beaucoup moins d'HTML généré)
- des ressources RAM et CPU (performance de la fonction, pas de grosses chaines à générer)

En terme d'optimisation, c'est un choix qui peut s'étudier (l'inconvénient majeure étant que déporter la génération d'une partie de la page au client, implique qu'il ait les critères requis, ici Javascript)


RE: [JSON] Exemple d'utilisation - lanoix - 11-04-2008

naholyr a écrit :à noter : json_encode() est une fonction ultra-performante (bien plus que n'importe quel foreach, et presque autant que serialize()).

Tu me parrais bien optimiste ("ultra-") face à Wikipédia...

Citation :Du point de vue du temps de traitement, évaluer une expression JSON en JavaScript est à peu de choses près aussi efficace que traiter son équivalent XML. Par contre, parser la même expression JSON est plus long : les traitements à effectuer sont plus intensifs.

Il y a performant et performant Smile


[hs] Sinon, qu'en pensent les argonautes?? ... de json ... Big Grin [/hs]


RE: [JSON] Exemple d'utilisation - Eluox - 11-04-2008

Après essai, trifouillage, j'adore Big Grin

Me reste plus qu'a recoder mon système de note, si j'y arrive Big Grin


RE: [JSON] Exemple d'utilisation - naholyr - 11-04-2008

Ah attention, ne pas froisser les fans d'XML Tongue

N'hésite pas à tester, j'ai dit ça en ayant en tête des benchs déjà réalisés, et des tests que j'ai réalisés moi-même et qui étaient parlants. Ne jamais croire ce que l'on dit sur parole (que ce soit moi ou wikipedia), il faut tester soi-même.


RE: [JSON] Exemple d'utilisation - Sephi-Chan - 11-04-2008

Hihi, je me suis amusé à injecter le script avec un petit Javascript : <script type='text/javascript'>onload = function(){ alert(document.cookie); }</script>.


Sephi-Chan


RE: [JSON] Exemple d'utilisation - lanoix - 11-04-2008

naholyr a écrit :Ah attention, ne pas froisser les fans d'XML Tongue

N'hésite pas à tester, j'ai dit ça en ayant en tête des benchs déjà réalisés, et des tests que j'ai réalisés moi-même et qui étaient parlants. Ne jamais croire ce que l'on dit sur parole (que ce soit moi ou wikipedia), il faut tester soi-même.

Je ne suis pas spécialement fan d'XML... Pour moi le XML c'est un peu comme le mp3, pas spécialement le meilleur mais les choses font que... Mais par contre, comme je suis occupé dans du trifouillage de performances, j'ai tiqué directement Smile


RE: [JSON] Exemple d'utilisation - Cartman34 - 30-05-2008

Je n'ai asp trouvé d'exemple d'utilisation via javascript, il me faudrait la fonction qui décode le json.
Cela aurait été intéressant d'avoir une petite démo.


RE: [JSON] Exemple d'utilisation - naholyr - 30-05-2008




RE: [JSON] Exemple d'utilisation - Sephi-Chan - 30-05-2008

Et oui, JavaScript Object Notation ! C'est du Javascript exploitable ! Smile