Logo Makeyourgame
Accueil Les formations Créer un jeu Les ateliers Les tutoriels Blog Loterie
Logo Makeyourgame
Les formations Les financements Les exercices La certification Unity
Logo Makeyourgame
Mes objectifs Les jeux Les ressources Le glossaire
Logo Makeyourgame
Les tutos Les tutos Youtube

Utiliser le format JSON : Web

pictureProfil_alto
Ecrit par alto
Catégorie Web
Mis à jour le 08/02/2018
Utiliser le format JSON
9 min Débutant

Découvrez comment utiliser le format JSON qui est très utilisé dans le web, mais aussi qui est complètement utilisable avec Unity. Ce format permet de structurer des données plus ou moins complexes, avant de les transmettre, par exemple, à une autre partie de l'application ou vers une application tierce.

Dérivé de la notation objet du javascript, le JavaScript Object Notation (JSON) permet de représenter de l’information structurée comme le permet XML par exemple.

Ce format fut créé par Douglas Crockford entre 2002 et 2005, on peut retrouver sa description dans la RFC 7159 de l’IETF.

 

Quel format utiliser ? JSON, YAML ou XML ?

Il faut savoir que le format JSON n'est pas le seul format texte (par opposition aux formats binaires) de structuration de données qui existe. En effet on peut trouver dans son sillage d'autres formats très utilisés, comme le XML ou le YAML.

Histoire de mieux visualiser de quoi il retourne, penchons nous sur les exemples ci-dessous. Ces exemples présentent les mêmes données selon les 3 formats cités.

 

Exemple JSON

{
    "player": {
        "pseudo": "terminator",
        "xp": "205",
        "backpack": {
            "item": [
                { "name": "potion", "nbre": "3" },
                { "name": "bullet", "nbre": "105" }
            ]
        }
    }
}

Ainsi on a ici à première vue un objet "player" qui est composé de 3 membres : "pseudo", "xp" et "backpack". Ce dernier est composé d'un tableau "item", contenant 2 éléments.

Nous reviendrons sur les normes d'écriture du format JSON, mais sachez déjà que les objets sont représentées par des accolades ouvrantes et fermantes.

Exemple XML

<player pseudo="terminator" xp="205">
   <backpack>
     <item name="potion" nbre="3" />
     <item name="bullet" nbre="105" />
   </backpack>
</player>

On notera ici l'obligation de fermer systématiquement les balises ouvertes, ce qui rend ce format assez lourd. Cependant les imbrications et les notions de parenté sont plus facilement visibles avec le XML.

 

Exemple YAML

player:
    pseudo: terminator
    xp: 205
    bacpack:
        item: 
           - name: potion
             nbre: 3
           - name: bullet
             nbre: 105

Le YAML, qui est un format plus récent, possède l'avantage d'être bien plus lisible pour un humain, et il dispose de plus de fonctionnalités comme la possibilité d'utiliser des commentaires dans le fichier, ou encore les ancres relationnelles, au contraire du JSON.

Unity utilise le YAML pour sauver les données des scènes de votre projet de jeu vidéo. Nous verrons ce point lors d'un prochain tutoriel sur l'utilisation du JSON avec Unity.

Quel format choisir ?

La réponse est bien sûr nuancée sans pouvoir trancher au profit d'un format plutôt qu'un autre...En effet chacun possède ses forces et faiblesses, et surtout cela dépend en réalité des besoins de votre application !!

Symfony (framework web) ou encore Drupal (CMS - web) utilisent par exemple le YAML pour leur format d'entrée et de sortie, tandis que Joomla (CMS - web) utilise plutôt le XML pour la description de ses templates.

Mais dans le domaine du web, le format JSON est aussi très utilisé, comme par exemple en AJAX lors de l'appel à certaines API web. C'est d'ailleurs la technologie AJAX qui a fait connaître ce format au grand public.

Il est toutefois à noter que le format JSON semble plus indiqué si les données ne sont pas trop complexes et/ou trop imbriquées. De plus le JSON ne dépend d'aucun langage et surtout il est pris en charge par bon nombre d'entre eux : Javascript, Php, Perl, Python, Ruby, Java,...

 

Créer son premier objet JSON

La description des données peut être écrite dans un fichier .json, puis lue par notre application, comme on le ferait avec un fichier de sauvegarde.  On peut aussi coder dynamiquement l'objet JSON, puis le remplir avec les données d'un autre objet de notre application, pour enfin le passer à un serveur web via une requête http.

Dans le cadre de la programmation de jeux vidéos, le format JSON peut réellement vous être très utile.

 

Premier contact avec le JSON

Le format JSON utilise un sytème de clé/valeur pour représenter les données, un peu comme un dictionnaire. Si on reprend notre premier exemple, présenté plus haut, on retrouve par exemple :

"pseudo": "terminator"

Ici la clé est "pseudo" et sa valeur est une chaîne de caractères (string en C#, String en Java...), soit "terminator".

Mais la valeur peut aussi être un tableau :

"item": [
       { "name": "potion", "nbre": "3" },
       { "name": "bullet", "nbre": "105" }
]

Sur la suite de notre exemple on trouve "item" qui est la clé et sa valeur qui est bien un tableau. Notez bien les crochets [].

De plus ce tableau contient 2 items, qui sont ici des objets, contenant chacun 2 paires de clé/valeur... Mais on aurait pu avoir un objet, lui même avec d'autres objets et/ou tableaux et ainsi de suite. Comprenez qu'il n'y  a pas de limite à la structuration de vos données.

En clair vous organisez comme vous voulez vos données !!

Enfin on pourrait très bien décider que la valeur de la clé "nbre" est un entier et non plus une chaîne de caractères...ainsi on écrirait :

"item": [
       { "name": "potion", "nbre": 3 },
       { "name": "bullet", "nbre": 105 }
]

 

ATTENTION! La clé doit bien être entre guillemets, au risque d'avoir un JSON non valide !!

 

Syntaxe du JSON

Après ce premier plongeon dans le format JSON voyons officiellement sa syntaxe .

  • Un objet est défini par des accolades { membre1, membre2 ... }, les membres doivent être séparés par des virgules.
  • Un membre est représenté par un couple   "clé":valeur
  • Le type de la valeur peut être : objet, tableau, nombre (entier ou décimal), chaîne de caractères, true, false, null
  • Un tableau est représenté par des crochets [  ], et il peut contenir lui même des objets ou tout autre type.

Et voilà tout ce que vous avez besoin de savoir sur la syntaxe du format JSON...passons à la pratique !!

Simple, efficace et compact.

 

Un premier objet JSON

Nous allons voir ici comment représenter des données issues d'un jeu vidéo.

Les données à utiliser sont les suivantes:

  • l'identifiant unique du joueur : "#2675FUI"
  • son nombre de diamants : 4239
  • les informations sur ses champs construits : les champs sont des objets qui permettent de référencer la position (x,y,z), l'état de la production (un chiffre décimal entre 0 et 1), le niveau actuel du champ

Ce joueur possède 2 champs :

  • Le premier champ est placé en (0,0.3,0), production à 90%, niveau 2
  • Le second est en (3,2.5,0.7), production à 22%, niveau 5

 

Comment représenter ces données ?

On commencera par noter que l'on a trois clés : identifiant, nombre de diamants, les champs. Ensuite chaque champ est un objet, composé de trois clé : position, production, niveau.

La difficulté réside dans la représentation de la position, mais en peut s'en sortir un voyant notre vecteur position comme un tableau de 3 cellules.

Ainsi une solution serait :

{
  "identifiant":"#2675FUI",
  "diamants":4239,
  "champs": [
       {"position":[0,0.3,0],"production":0.9,"niveau":2},
       {"position":[3,2.5,0.7],"production":0.22,"niveau":5}
   ]
}

 

N 'hésitez à penser une autre architecture, le tout c'est d'avoir un code valide...pour cela faites un tour sur ce validateur, copier-coller votre code et cliquez sur "process".

Rendez vous sur un prochain tutoriel avec Unity pour poursuivre votre apprentissage sur l'utilisation du format JSON.

 

Vues: 1934

Licence:



Validation du Tutoriel

Veuillez vous connecter ou créer un compte pour pouvoir valider ce tutoriel et ainsi gagner de l'expérience (XP) !