JSON


JavaScript Object Notation

À propos de JSON

Utilisation de la bibliothèque nlohmann-json de JSON for Modern C++ - Niels Lohmann.

JSON

Le Modern C++ fait référence aux versions du langage C++ à partir de C++11, poursuivant son évolution en tant que langage dérivé qui étend le C. Les normes depuis C++11 ont considérablement amélioré la façon d’écrire les programmes et leurs fonctionnalités, donnant naissance à ce que l’on appelle aujourd’hui le Modern C++. De nouvelles normes sont introduites tous les trois ans, y compris C++11, C++14, C++17, C++20 et C++23.

Parmi les bibliothèques JSON populaires écrites en Modern C++, nlohmann/json se distingue. Cette bibliothèque open-source, uniquement composée de headers, est devenue tendance ces dernières années, offrant de multiples fonctions tout en maintenant la stabilité et un palmarès éprouvé. Elle est incroyablement pratique à utiliser. Bien que sa lenteur de traitement soit souvent mentionnée, sa convivialité compense cet inconvénient.


Formats de données

Les fichiers JSON sont des données textuelles enregistrées au format UTF-8, écrites selon un format de description de données spécifique.

Avant l’avènement de JSON, CSV et XML étaient également utilisés comme formats d’échange de données. Le CSV a des spécifications ambiguës, sans normes unifiées et avec une mauvaise lisibilité des données, tandis que le XML, bien que unifié et très flexible grâce à la notation du langage de balisage, souffre d’une interprétation lente et d’un volume de données plus important en raison de sa structure à balises.

JSON offre une haute lisibilité, des informations minimales redondantes et une taille de données plus petite par rapport à XML. Il prend en charge plus de types de données que CSV, y compris les chaînes de caractères, les nombres, les booléens, les valeurs nulles, les tableaux et les objets.


comparaison

Animaux Sons Jambes
Cat Meow 4
Dog Woof 4
Owl hoo-h’HOO-hoo-hoo 2

Décrire le tableau ci-dessus dans les formats CSV, XML et JSON respectivement.

FORMAT
Animaux,Sons,Jambes
Cat,Meow,4
Dog,Woof,4
Owl,hoo-h'HOO-hoo-hoo,2
<?xml version="1.0" encoding="utf-8"?>
<Animaux>
    <Animal Type="Cat" Sons="Meow" Jambes="4" />
    <Animal Type="Dog" Sons="Woof" Jambes="4" />
    <Animal Type="Owl" Sons="hoo-h'HOO-hoo-hoo" Jambes="2" />
</Animaux>
{
    "ANIMAL":["Cat", "Dog", "Owl"],
    "SOUNDS":["Meow","Woof","hoo-h’HOO-hoo-hoo"],
    "LEGS":  [4,4,2]
}

Pour les petites données, le format CSV suffit, mais JSON décrit naturellement des structures de données qui ne pourraient pas être exprimées en CSV.

En XML, il est important de distinguer chaque entité avec des balises individuelles, et la redondance de la notation XML vise à améliorer la cohérence et la lisibilité des données. Par conséquent, elle ne peut pas être omise, ce qui entraîne une augmentation du volume de données.

Pour les mots-clés “animal,” “son,” et “nombre de jambes,” trois ensembles de données sont inclus dans un tableau de type array :

  • Animaux = Chat, Chien, Hibou
  • Sons = Miaou, Woof, hoo-h’HOO-hoo-hoo
  • Jambes = 4, 4, 2

Le rôle de la bibliothèque nlohmann/json est d’analyser cela en une structure de données de type dictionnaire (data structure) afin qu’elle puisse être utilisée en C++.


URL connexes