JeuWeb - Crée ton jeu par navigateur
cherche un tutorial JSON - javascript - 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 : cherche un tutorial JSON - javascript (/showthread.php?tid=4531)

Pages : 1 2


cherche un tutorial JSON - javascript - php_addict - 13-01-2010

bonjour

j'utilise un tout petit peu AJAX pour 2 ou 3 trucs

et en attendant de pouvoir comprendre le JSON j'utilisais la fonction eval() qui apparemment: eval is evil...

Je cherche infructueusement un tutorial sur le JSON et javascript qui n'utilise pas eval() ...

connaitriez vous 'such a tutoriel ' ?

bonne journée


RE: cherche un tutorial JSON - javascript - Anthor - 13-01-2010

C'est juste un tableau. Qu'est-ce que tu ne comprends pas ?


RE: cherche un tutorial JSON - javascript - Sephi-Chan - 13-01-2010

Même question, peut-être pourrais-tu nous expliquer un peu ce que tu cherches faire et ce que tu as déjà fait.

JSON, c'est juste une notation pour représenter des objets, et — par un heureux hasard — c'est exactement la même notation qu'un objet Javascript !

Ainsi, voilà un objet JSON :


{
name: "Vegeta",
race: "Saiyan",
health: 160,
energy: 50
abilities: [
{
name: "Galick",
damages: 53,
energy: 20
},
{
name: "Final Flash",
damages: 67,
energy: 25
}
]
}

JSON, c'est juste une façon de noter un objet pour l'envoyer à quelque chose d'autre. Tous les langages proposent des API pour transformer un objet JSON en objet dudit langage (par exemple PHP propose json_decode) ou inversement : renvoyer une chaîne (du type de celle que j'ai représentation (une chaîne de caractère) .

Pour utiliser JSON avec PHP, il faut faire attention à quelques choses. Ainsi, les clés (name, race, energy, etc.) et les chaînes doivent être entourées de guillemets doubles. Sinon le parser de PHP plante (et renvoie NULL).

Admettons donc que je reçoive un objet JSON dans mon script (dans cet exemple, je vais l'écrire en dur, mais dans la pratique tu auras généralement une source externe) :


<?php

$vegeta_as_string = '{
"name": "Vegeta",
"race": "Saiyan",
"health": 160,
"energy": 50,
"abilities": [
{
"name": "Galick",
"damages": 53,
"energy": 20
},
{
"name": "Final Flash",
"damages": 67,
"energy": 25
}
]
}';

$vegeta = json_decode($vegeta_as_string);
print_r($vegeta);

// On crée une attaque pour notre ami.
$ability = new StdClass();
$ability->name = "Final Shine Attack";
$ability->damages = 99;
$ability->energy = 35;

$vegeta->abilities[] = $ability;

$vegeta_as_string = json_encode($vegeta);
echo $vegeta_as_string;

?>

Et voilà ce qu'affiche ce script (lancé en CLI) :


stdClass Object
(
[name] => Vegeta
[race] => Saiyan
[health] => 160
[energy] => 50
[abilities] => Array
(
[0] => stdClass Object
(
[name] => Galick
[damages] => 53
[energy] => 20
)

[1] => stdClass Object
(
[name] => Final Flash
[damages] => 67
[energy] => 25
)

)

)

{"name":"Vegeta","race":"Saiyan","health":160,"energy":50,"abilities":[{"name":"Galick","damages":53,"energy":20},{"name":"Final Flash","damages":67,"energy":25},{"name":"Final Shine Attack","damages":99,"energy":35}]}

Voilà, j'espère que ces exemples t'auront permis de comprendre la puissance de cette notation d'échange de données. Smile


Sephi-Chan


RE: cherche un tutorial JSON - javascript - Ter Rowan - 13-01-2010

je pense avoir eu le même problème que php_addict

ce n'est pas tant savoir lire avec ses yeux le json

c'est savoir lors d'un échange ajax (ou ajaj) par exemple comment faire pour que le "texte" qui porte l'information json devienne un objet javascript


grossièrement l'équivalent de json_decode en php mais en javascript

je n'ai vu qu'eval moi aussi quand je cherchais, du coup j'ai décidé de passer à xml ^^


RE: cherche un tutorial JSON - javascript - Sephi-Chan - 13-01-2010

Tu peux utiliser JSON2.js, une librairie documentée sur json.org.

Sinon, tu peux utiliser une librairie Javascript telle que jQuery, qui incorpore un parser JSON qui a l'avantage d'utiliser le support natif de JSON quand le navigateur le supporte (tous sauf dans les IE qui précèdent IE8).


Sephi-Chan


RE: cherche un tutorial JSON - javascript - php_addict - 13-01-2010

merci pour toutes ces infos...

donc je vais m'exprimer plus clairement:

- j'ai une map de 15x15 carte admetons
- la carte peut defiler au nord, sud, est ouest...
- si javascript est activé alors seul la carte est chargée en ajax

fonctionnement de mon ajax:

- receiveReq.open("GET", 'map.php', true);

map.php genere les code html pour afficher la carte, ce sont evidement des div et du css

par contre map.php genere egalement un code javascritp (une varaible tableau pour les onmouseover sur les zones cliquables de la carte

ce que je faisait:

- receiveReq.open("GET", fichier, true); pour recupere le html pour afficher la map et le code JS
- je recupere le code JS du receiveReq.responseText dans une varialbe et fais un eval() pour executer le code JS

je sais c'est moche....

ce que je compte faire:

- receiveReq.open("GET", 'map.php', true) genere un fichier JSON avec le contenu de la carte à afficher (html) et le code JS pour les onmouseover
- utiliser JSON.parse plutot que eval pour executer le socde js

qu'en pensez vous?

merci ?


RE: cherche un tutorial JSON - javascript - Ter Rowan - 14-01-2010

bon j ai pas cherché plus que cela mais en regardant le premier lien de Sephy il y a un eval utilisé dans la bibliothèque

du coup, certes ce n'est pas toi qui fait l'eval, mais la bibliothèque semble le faire


bref perso, je reste sur xml Smile


RE: cherche un tutorial JSON - javascript - Sephi-Chan - 14-01-2010

Cette librairie est la librairie de référence en ce qui concerne la manipulation d'objets JSON via Javascript. Son auteur, Douglas Crockford, est un grand gourou de ce langage. Tu peux être certain que son utilisation d'eval est sûre.

Une chose m'échappe : comment traites-tu le XML qui t'es retourné ?

Pour ton problème, php_addict, je pense que tu devrais aller au bout de la démarche et faire en sorte que map.php te renvoie un objet JSON qui contient le nécessaire pour construire le HTML de ta carte (et les événements) côté client : ce sera plus rapide (tu n'as que des données à transmettre, pas un gros pavé de HTML) et moins coûteux (tu utilises les ressources du client, pas du serveur pour générer le DOM).


Sephi-Chan


RE: cherche un tutorial JSON - javascript - php_addict - 14-01-2010

(14-01-2010, 03:34 AM)Sephi-Chan a écrit : Pour ton problème, php_addict, je pense que tu devrais aller au bout de la démarche et faire en sorte que map.php te renvoie un objet JSON qui contient le nécessaire pour construire le HTML de ta carte (et les événements) côté client : ce sera plus rapide (tu n'as que des données à transmettre, pas un gros pavé de HTML) et moins coûteux (tu utilises les ressources du client, pas du serveur pour générer le DOM).

bon, ca y est presque...en tout cas avec JSON ca marche :good:

me reste plus qu'à reduire la taille de mon fichier JSON et de le traiter mieux du cote client, car la c'est encore un peu brute de chez brute comme données...

encore merci...

autre question:

le JSON c'est pris en charge par tout les navigateurs? et depuis quand?

merci

a+


RE: cherche un tutorial JSON - javascript - Ter Rowan - 14-01-2010

(14-01-2010, 03:34 AM)Sephi-Chan a écrit : Une chose m'échappe : comment traites-tu le XML qui t'es retourné ?
assez simplement

au vu des difficultés que j'avais rencontré sur l'interprétation des propriétés d'un noeud avec ie en particulier, je restais sur un protocole de communication basique

<xml>
<tutu>
<titi>
valeur
</titi>
<toto>
valeur
</toto>
</tutu>
</xml>

en utilisant responseXML

j'ai vu sur le forum que d'autres avaient eu le même soucis que moi et finalement avait mis en place une couche javascript interprétant le responseText, ce qui permettait de garantir l'interprétation d'un noeud (je crois que c'était rowoll qui avait posté mais pas sûr)

jusqu'à présent j'avais comme info sur json
"json est interprétable nativement par javascript avec eval (avec tous les risques que cela comporte)"

maintenant j'ai "json est interprété par javascript avec une "bibliothèque" " et tu as raisons peu importe si il y a un eval dedans si la bibliothèque est bien sécurisée

conclusion
json est interprété non nativement et nécessite une bibliothèque
xml est interprété non nativement et nécessite du code

à chacun de voir, pour moi l'un n'est pas meilleur que l'autre dans l'absolu (sinon il aurait été abandonné) mais est plus adapté à certains programmeurs