Qu'est-ce que JSON? Un meilleur format pour l'échange de données

JavaScript Object Notation est une représentation textuelle sans schéma de données structurées basée sur des paires clé-valeur et des listes ordonnées. Bien que JSON soit dérivé de JavaScript, il est pris en charge de manière native ou via des bibliothèques dans la plupart des principaux langages de programmation. JSON est couramment, mais pas exclusivement, utilisé pour échanger des informations entre les clients Web et les serveurs Web. 

Au cours des 15 dernières années, JSON est devenu omniprésent sur le Web. Aujourd'hui, c'est le format de choix pour presque tous les services Web accessibles au public, et il est également fréquemment utilisé pour les services Web privés.

La popularité de JSON a également entraîné la prise en charge native de JSON par de nombreuses bases de données. Les bases de données relationnelles telles que PostgreSQL et MySQL sont désormais livrées avec une prise en charge native pour le stockage et l'interrogation des données JSON. Les bases de données NoSQL comme MongoDB et Neo4j prennent également en charge JSON, bien que MongoDB utilise une version binaire légèrement modifiée de JSON dans les coulisses.

Dans cet article, nous examinerons rapidement JSON et discuterons de sa provenance, de ses avantages par rapport à XML, de ses inconvénients, du moment où vous devriez l'utiliser et du moment où vous devriez envisager des alternatives. Mais d'abord, plongeons dans les détails de ce à quoi ressemble JSON dans la pratique.

Exemple JSON

Voici un exemple de données encodées en JSON:

{

  "FirstName": "Jonathan",

  "LastName": "Freeman",

  «LoginCount»: 4,

  "IsWriter": vrai,

  «WorksWith»: [«Spantree Technology Group», «»],

  "animaux domestiques": [

    {

      «Nom»: «Lilly»,

      "Type": "Raton laveur"

    }

  ]

}

La structure ci-dessus définit clairement certains attributs d'une personne. Il comprend un prénom et un nom, le nombre de fois où la personne s'est connectée, si cette personne est un écrivain, une liste des entreprises avec lesquelles la personne travaille et une liste des animaux de compagnie de la personne (un seul, dans ce cas). Une structure comme celle ci-dessus peut être transmise d'un serveur à un navigateur Web ou à une application mobile, qui effectuera ensuite une action telle que l'affichage des données ou leur sauvegarde pour référence ultérieure.

JSON est un format de données générique avec un nombre minimal de types de valeur: chaînes, nombres, booléens, listes, objets et null. Bien que la notation soit un sous-ensemble de JavaScript, ces types sont représentés dans tous les langages de programmation courants, ce qui fait de JSON un bon candidat pour transmettre des données à travers les lacunes du langage.

Fichiers JSON

Les données JSON sont stockées dans des fichiers qui se terminent par l'extension .json. Conformément à la philosophie de JSON lisible par l'homme, il s'agit simplement de fichiers texte brut et peuvent être facilement ouverts et examinés. Comme l'explique le blog SQLizer, c'est également une clé de l'interopérabilité plus large de JSON, car à peu près toutes les langues que vous pouvez nommer peuvent lire et traiter des fichiers en texte brut, et ils sont faciles à envoyer sur Internet.

Pourquoi devrais-je utiliser JSON? 

Pour comprendre l'utilité et l'importance de JSON, nous devrons comprendre un peu l'histoire de l'interactivité sur le Web. 

Au début des années 2000, l'interactivité sur le Web a commencé à se transformer. À l'époque, le navigateur servait principalement de client stupide pour afficher des informations, et le serveur faisait tout le travail acharné pour préparer le contenu à l'affichage. Lorsqu'un utilisateur cliquait sur un lien ou un bouton dans le navigateur, une demande était envoyée au serveur, le serveur préparait les informations nécessaires au format HTML et le navigateur rendrait le HTML comme une nouvelle page. Ce modèle était lent et inefficace, obligeant le navigateur à tout restituer sur la page même si seule une section de la page avait changé.

Étant donné que les recharges de pages complètes étaient coûteuses, les développeurs Web se sont tournés vers des technologies plus récentes pour améliorer l'expérience utilisateur globale. Pendant ce temps, la capacité de faire des requêtes Web en arrière-plan pendant qu'une page était affichée, récemment introduite dans Internet Explorer 5, se révélait être une approche viable pour charger les données de manière incrémentielle à afficher. Au lieu de recharger tout le contenu de la page, cliquer sur le bouton Actualiser déclencherait une requête Web qui se chargerait en arrière-plan. Lorsque le contenu était chargé, les données pouvaient être manipulées, enregistrées et affichées sur la page à l'aide de JavaScript, le langage de programmation universel des navigateurs.

REST vs SOAP: la connexion JSON

À l'origine, ces données étaient transférées au format XML (voir ci-dessous pour un exemple) en utilisant un protocole de messagerie appelé SOAP (Simple Object Access Protocol). Mais XML était verbeux et difficile à gérer en JavaScript. JavaScript avait déjà des objets, qui sont un moyen d'exprimer des données dans le langage, donc Douglas Crockford a pris un sous-ensemble de cette expression comme spécification d'un nouveau format d'échange de données et l'a baptisé JSON. JSON était beaucoup plus facile à lire pour les gens et pour les navigateurs à analyser.

Au cours des années 2000, une autre technologie de services Web, appelée Representational State Transfer, ou REST, a commencé à dépasser SOAP dans le but de transférer des données. L'un des grands avantages de la programmation à l'aide des API REST est que vous pouvez utiliser plusieurs formats de données - pas seulement XML, mais également JSON et HTML. À mesure que les développeurs Web préféraient JSON à XML, ils en sont venus à préférer REST à SOAP. Comme Kostyantyn Kharchenko l'a indiqué sur le blog Svitla, «à bien des égards, le succès de REST est dû au format JSON en raison de sa facilité d'utilisation sur diverses plates-formes.»

Aujourd'hui, JSON est la norme de facto pour l'échange de données entre les clients Web et mobiles et les services back-end. 

JSON contre XML

Comme indiqué ci-dessus, la principale alternative à JSON est XML. Cependant, XML est de moins en moins courant dans les nouveaux systèmes et il est facile de comprendre pourquoi. Vous trouverez ci-dessous une version des données que vous avez vues ci-dessus, cette fois en XML:

  Jonathan

  Homme libre

  4

  vrai

    Groupe technologique Spantree

      Lilly

      Raton laveur

En plus d'être plus verbeux (exactement deux fois plus verbeux dans ce cas), XML introduit également une certaine ambiguïté lors de l'analyse dans une structure de données compatible avec JavaScript. La conversion de XML en objet JavaScript peut prendre entre des dizaines et des centaines de lignes de code et nécessite finalement une personnalisation en fonction de l'objet spécifique analysé. La conversion de JSON en objet JavaScript prend une ligne de code et ne nécessite aucune connaissance préalable de l'objet en cours d'analyse.

Limitations de JSON

Bien que JSON soit un format de données relativement concis et flexible avec lequel il est facile de travailler dans de nombreux langages de programmation, le format présente certains inconvénients. Voici les cinq principales limitations: 

  1. Pas de schéma. D'une part, cela signifie que vous avez une flexibilité totale pour représenter les données comme vous le souhaitez. D'autre part, cela signifie que vous pourriez créer accidentellement des données déformées très facilement.
  2. Un seul type de nombre: le format à virgule flottante double précision IEEE-754. C'est une bouchée, mais cela signifie simplement que vous ne pouvez pas profiter des types de nombres divers et nuancés disponibles dans de nombreux langages de programmation.
  3. Aucun type de date. Cette omission signifie que les développeurs doivent recourir à l'utilisation de représentations sous forme de chaîne de dates, ce qui entraîne des écarts de formatage, ou doivent représenter des dates sous forme de millisecondes depuis l'époque (1er janvier 1970).
  4. Sans commentaires. Cela rend impossible d'annoter les champs en ligne, ce qui nécessite une documentation supplémentaire et augmente le risque de malentendu.
  5. Verbosité. Bien que JSON soit moins détaillé que XML, ce n'est pas le format d'échange de données le plus concis. Pour les services à volume élevé ou à usage spécial, vous souhaiterez utiliser des formats de données plus efficaces.

Quand dois-je utiliser JSON?

Si vous écrivez un logiciel qui communique avec un navigateur ou une application mobile native, vous devez utiliser JSON comme format de données. L'utilisation d'un format comme XML est un choix obsolète et un signal d'alarme pour les talents frontaux et mobiles que vous aimeriez autrement attirer.

Dans le cas de la communication de serveur à serveur, il vaut peut-être mieux utiliser un cadre de sérialisation comme Apache Avro ou Apache Thrift. JSON n'est pas un mauvais choix ici, et peut toujours être exactement ce dont vous avez besoin, mais la réponse n'est pas aussi claire que pour la communication Web et mobile.

Si vous utilisez des bases de données NoSQL, vous êtes à peu près coincé avec tout ce que la base de données vous donne. Dans les bases de données relationnelles qui prennent en charge JSON en tant que type, une bonne règle de base est de l'utiliser le moins possible. Les bases de données relationnelles ont été optimisées pour les données structurées qui correspondent à un schéma particulier. Alors que la plupart prennent désormais en charge des données plus flexibles sous la forme de JSON, vous pouvez vous attendre à un impact sur les performances lors de l'interrogation de propriétés dans ces objets JSON.

JSON est le format de facto omniprésent pour l'envoi de données entre les serveurs Web et les navigateurs et les applications mobiles. Sa conception simple et sa flexibilité le rendent facile à lire et à comprendre, et dans la plupart des cas, facile à manipuler dans le langage de programmation de votre choix. L'absence de schéma strict permet la flexibilité du format, mais cette flexibilité rend parfois difficile de garantir que vous lisez et écrivez correctement JSON.

Analyseur JSON

La partie du code d'une application qui transforme les données stockées au format JSON dans un format que l'application peut utiliser est appelée un analyseur. JavaScript, comme vous vous en doutez, inclut un analyseur natif, la méthode JSON.parse ().

Vous devrez peut-être faire un peu plus de travail pour travailler avec JSON dans des langages fortement typés comme Scala ou Elm, mais l'adoption généralisée de JSON signifie qu'il existe des bibliothèques et des utilitaires pour vous aider à travers toutes les parties les plus difficiles. 

Le site Web json.org comprend une liste complète de bibliothèques de code que vous pouvez utiliser pour analyser, générer et manipuler JSON, dans des langages aussi divers que Python, C # et COBOL.

Utilitaires JSON

Si vous souhaitez manipuler ou examiner directement des données codées JSON, sans écrire vous-même de code, il existe un certain nombre d'utilitaires en ligne qui peuvent vous aider. Tous les équivalents programmatiques dans les bibliothèques de code liées à ci-dessus, mais vous pouvez couper et coller du code JSON dans ces outils basés sur un navigateur pour vous aider à mieux comprendre JSON ou effectuer une analyse rapide et sale:

  • Formateur JSON: JSONLint formatera et validera le code JSON arbitraire.
  • Visionneuse JSON: Stack.hu a un site qui créera une arborescence interactive pour vous aider à comprendre la structure de votre code JSON. 
  • Embellisseur JSON: Si vous voulez «bien imprimer» votre code JSON, avec la coloration de la syntaxe, etc. 
  • Convertisseur JSON: Besoin de déplacer rapidement les données d'un format JSON vers autre chose? Convertcsv.com dispose d'outils qui peuvent convertir JSON en CSV (qui peut ensuite être ouvert dans Excel) ou XML.

Tutoriel JSON

Prêt à vous plonger et à en savoir plus sur la manière de travailler avec JSON dans vos applications interactives? Le Mozilla Developer Network propose un excellent tutoriel qui vous permettra de démarrer avec JSON et JavaScript. Si vous êtes prêt à passer à d'autres langages, consultez le didacticiel sur l'utilisation de JSON avec Java (de Baeldung), avec Python (depuis DataCamp) ou avec C # (depuis l'aide de Software Testing). Bonne chance!

Josh Fruhlinger a contribué à cet article.