Sérialisation

Problème

Afin de faire communiquer plusieurs applications, il est nécessaire de pouvoir échanger des données.

Cependant, on souhaite idéalement continuer de manipuler des données sous un format de haut niveau (par exemple des objets dans un langage orienté objets),

Il y a donc besoin de formats standards d'échange de données, et d'outils permettant de rendre les conversions les plus transparentes possibles.

Normalisation et sérialisation

On décomposera parfois cette transformation en deux étapes:

  • La normalisation transforme un objet en un format normalisé (par exemple un array en PHP) et vice-versa.
  • La sérialisation transforme un format normalisé en chaîne de caractère (string) et vice-versa.

Par exemple :

Formats de sérialisation

XML

Le format XML se compose de balises et d'attributs. HTML5, que vous connaissez, est basé sur un formalisme très proche (quasi-compatible). Par exemple :

<movies>
    <movie title="Star wars" year="1977">
        <genre name="Sci-Fi" />
        <genre name="Action" />
    </movie>
</movies>

JSON

Le format JSON, pour JavaScript Object Notation, est un format très standard qui s'appuie sur les éléments suivants:

  • Des types primitifs (une chaîne, un nombre, un booléen ou null),
  • Des tableaux (array), notés avec [],
  • Des objets (object), notés avec {}.

Par exemple :

{
    "movies": [
        "title": "Star wars",
        "year": 1977,
        "genres": [
            {"name": "Sci-Fi"},
            {"name": "Action"}
        ]
    ]
}