9 points par GN⁺ 2024-12-09 | 2 commentaires | Partager sur WhatsApp
  • JSON5 est un format qui étend le format de fichier JSON afin de le rendre plus facile à écrire et à maintenir par des humains
    • Il n’est pas destiné à la communication entre machines
    • Lancé en 2012, il dépasse les 65 millions de téléchargements par semaine en 2022 et fait partie du top 0,1 % des packages les plus dépendus sur npm
    • Il est adopté par de grands projets comme Chromium, Next.js, Babel, Retool et WebStorm
    • Il est pris en charge nativement sur les plateformes Apple comme macOS et iOS
  • Caractéristiques de JSON5
    • C’est un surensemble de JSON qui inclut une partie de la syntaxe d’ECMAScript 5.1
    • Un fichier JSON5 est toujours un fichier ES5 valide
  • Fonctionnalités étendues d’ECMAScript 5.1
    • Objets
      • Les clés d’objet peuvent être des IdentifierName d’ECMAScript 5.1
      • Une unique virgule finale est autorisée dans les objets
    • Tableaux
      • Une unique virgule finale est autorisée dans les tableaux
    • Chaînes
      • Les chaînes peuvent être entourées de guillemets simples
      • Elles peuvent s’étendre sur plusieurs lignes en échappant le caractère de fin de ligne
      • Elles peuvent contenir des séquences d’échappement de caractères
    • Nombres
      • Ils peuvent être exprimés en hexadécimal
      • Ils peuvent avoir un point décimal en tête ou en fin
      • Ils peuvent inclure l’infini positif, l’infini négatif et NaN selon la norme IEEE 754
      • Ils peuvent commencer par un signe plus explicite
    • Commentaires
      • Les commentaires sur une ligne et sur plusieurs lignes sont autorisés
    • Espaces
      • Des caractères d’espacement supplémentaires sont autorisés
  • API
    • JSON5.parse() : analyse une chaîne JSON5 pour produire une valeur ou un objet JavaScript
    • JSON5.stringify() : convertit une valeur JavaScript en chaîne JSON5
  • CLI
    • Fournit une CLI pour convertir JSON5 en JSON ou valider la syntaxe d’un document JSON5
  • Compatibilité ECMAScript
    • JSON5 a été conçu pour être totalement compatible avec ES5, mais les caractères U+2028 et U+2029 ne sont pas autorisés en ES5
    • Ces caractères ont été autorisés dans ES2019, ce qui rend JSON et JSON5 entièrement compatibles avec ES2019
  • Licence
    • Distribué sous licence MIT

2 commentaires

 
GN⁺ 2024-12-09
Avis Hacker News
  • JSON ne prend en charge que les chaînes entre guillemets doubles, ce qui élimine les débats sur l’usage des guillemets. Il est possible d’utiliser JSONC pour ajouter des commentaires et des virgules finales
    • JSONC est utilisé comme format de configuration dans Visual Studio Code
  • Le nom JSON5 semble contraire à l’éthique. Suggérer qu’il s’agit de la version suivante sans l’approbation du créateur original paraît inapproprié
  • Préférence pour JSON5, avec l’idée que YAML est peu lisible. Des outils de conversion vers JSON sont souvent utilisés pour comprendre les fichiers YAML
  • JSON est largement utilisé parce qu’il est simple. Des alternatives complexes comme XML ou YML ne paraissent pas adaptées
    • L’utilisation de formats complexes peut provoquer des problèmes
  • Regret qu’EDN n’ait pas été davantage adopté en dehors de l’écosystème Clojure
    • Il n’existe pas de standard, mais les utilisateurs s’en sortent sans problème
  • Mise en avant d’un problème de caractères spéciaux dans JSON. JSON est défini en UTF-8, mais comporte une erreur décrivant incorrectement les caractères de contrôle ASCII sur 7 bits
    • La RFC devrait inclure 33 caractères de contrôle
  • TOML est recommandé, considéré comme la combinaison parfaite entre lisibilité humaine et prise en charge par les outils
  • Dans les alternatives à JSON/YAML, prendre en charge davantage de types n’est pas vu comme une bonne idée
    • NestedText est presque idéal, mais utilise plusieurs syntaxes et n’intègre pas les commentaires dans le modèle de données
  • Il est souligné que JSON5 n’a pas introduit de séquence d’échappement \U pour les caractères Unicode hors BMP
    • Devoir utiliser des paires de substitution UTF-16 est contraignant et ne correspond pas au standard Unicode
  • En dehors des commentaires et d’un type datetime natif, peu d’autres fonctionnalités semblent nécessaires dans JSON
    • Les virgules finales sont jugées utiles