JSON
JavaScript Object Notation
À propos de JSON
Utilisation de la bibliothèque nlohmann-json de JSON for Modern C++ - Niels Lohmann.
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.
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
- JSON Pointer
- Action
- New Blank JSON
- Load from a File (TEXT)
- Save to a File
- Cre. Arr: Data Auto Fill
- Cre. Array: Boolean
- Cre. Arr. RGX Ex.Subm.
- Cre. Arr. RGX Pa.Subm.
- Cre. 2D-Arr: Oi Info
- Set Targeted JSON Pointer
- Targeted Array :: Overwrite > Set the Val As Bool
- Targeted Array :: push_back String
- Create New 2D-Array with Tgt Oi's Xy Coords
- Create New 2D-Array with Pursuer Oi's Xy Coords
- Create New 1D-Array with Mvt Tgt Oi FixVal
- Create New 1D-Array with Mvt Pursuer Oi FixVal
- Targeted JSON Pointer :: Batch Assignment for Oi Alt Values[n]
- Targeted JSON Pointer :: Batch Assignment for Oi Alt String[n]
- Targeted JSON Pointer :: Batch Assignment for Oi Flag[n]
- JSON Pointer :: OverWrite with a Boolean
- Overwrite with Sequential (2D-Array Only)
- Condition
- Expression