Weekly backup.
This commit is contained in:
69
20220604110059-json.org
Normal file
69
20220604110059-json.org
Normal file
@@ -0,0 +1,69 @@
|
||||
:PROPERTIES:
|
||||
:ID: 6c59d844-1f1a-440c-be78-4a9df286fab6
|
||||
:mtime: 20220604114243
|
||||
:ctime: 20220604110059
|
||||
:END:
|
||||
#+title: Json
|
||||
|
||||
* Introduction
|
||||
*J*avaScript *O*bject *N*otation :
|
||||
* Est un format de données textuelles dérivé de la notation des objets du langage /JavaScript/,
|
||||
* Permet de représenter de l’information structurée,
|
||||
* A été créé par Douglas Crockford entre 2002 et 2005,
|
||||
* Première norme est ECMA-404, publiée en octobre 20032,
|
||||
* Actuellement décrit par les deux normes en concurrence : RFC 82593 de l’IETF et ECMA-4044 de l'ECMA, denière version
|
||||
publiée en décembre 2017.
|
||||
|
||||
* Spécifications
|
||||
Un document JSON comprend :
|
||||
* 2 types composés :
|
||||
* Objet ou dictionnaire (clés/valeurs),
|
||||
* Liste ordonnées de valeurs,
|
||||
* 4 types scalaires :
|
||||
* Booléen : /true/ ou /false/,
|
||||
* Nombre : décimal signé (pas de distinction entre entier et flottant),
|
||||
* Chaîne de caractères : séquence de 0 ou plusieurs caractères Unicode entourée de guillemets,
|
||||
* La valeur /null/ : une valeur vide.
|
||||
|
||||
* Extensions de JSON
|
||||
** JSON5
|
||||
Destiné à contourner les limitation de JSON :
|
||||
* Les noms des champs ne sont plus entre guillemets,
|
||||
* Ajout des commentaires (sur une ou plusieurs lignes),
|
||||
* Support du format hexadécimal pour les nombres,
|
||||
* Les nombres peuvent prendre les valeurs /Infinity/ ou /NaN/,
|
||||
* Espaces blancs supplémentaires autorisés,
|
||||
* Les /string/ peuvent être contenus entre apostrophes.
|
||||
** HJSON
|
||||
Destiné à contourner les limitation de JSON :
|
||||
* Les champs peuvent être séparés par un retour à la ligne au lieu d'une virgule,
|
||||
* Ajout des commentaires (sur une ou plusieurs lignes),
|
||||
* Utilisation des guillemets pour encapsuler une /string/ n'est pas obligatoire,
|
||||
* Les /string/ peuvent être écrites sur plusieurs lignes.
|
||||
|
||||
* Description d'une stucture de données JSON (JSPEC)
|
||||
JSPEC est un language décrivant une structure de données JSON (équivalent à xsd pour le xml).
|
||||
Les fichiers de descripion JSPEC ont l'extension /*.jspec/.
|
||||
|
||||
** Python
|
||||
Le module /[[https://github.com/chrismalcolm/jspec][jspec]]/ :
|
||||
#+BEGIN_SRC python :results output
|
||||
# pip install jspect
|
||||
from jspec import loads, check
|
||||
|
||||
spec = loads('{"name": string, "age": int, ... }')
|
||||
|
||||
chris = {"name": "Chris", "age": 26, "status": "online"}
|
||||
bob = {"name": "Bob", "age": 34.5}
|
||||
|
||||
print(f'{check(spec, chris) = }')
|
||||
print(f'{check(spec, bob) = }')
|
||||
#+END_SRC
|
||||
|
||||
#+RESULTS:
|
||||
: check(spec, chris) = (True, '')
|
||||
: check(spec, bob) = (False, 'At location $ - exhausted JSON object, failed to match the following JSPEC pairs: ["age": int, ...]')
|
||||
|
||||
* Références
|
||||
* [[https://medium.com/@chrismalcolm_35838/the-best-json-validation-library-for-python-in-2022-b6de4f8014d4][The best json validation library for python in 2022 - Medium]]
|
||||
* [[https://fr.wikipedia.org/wiki/JavaScript_Object_Notation][Javascript Object Notation - Wikipedia]]
|
Reference in New Issue
Block a user