Question Est-ce que les commentaires peuvent être utilisés dans JSON?


Puis-je utiliser des commentaires dans un fichier JSON? Si c'est le cas, comment?


5777
2017-10-28 20:39


origine


Réponses:


Non.

Le JSON doit tous être des données, et si vous incluez un commentaire, ce sera aussi des données.

Vous pourriez avoir un élément de données désigné appelé "_comment" (ou quelque chose) qui serait ignoré par les applications qui utilisent les données JSON.

Il serait probablement mieux d'avoir le commentaire dans les processus qui génèrent / reçoivent le JSON, car ils sont supposés savoir quelles seront les données JSON à l'avance, ou du moins la structure de celui-ci.

Mais si vous avez décidé de:

{
   "_comment": "comment text goes here...",
   "glossary": {
      "title": "example glossary",
      "GlossDiv": {
         "title": "S",
         "GlossList": {
            "GlossEntry": {
               "ID": "SGML",
               "SortAs": "SGML",
               "GlossTerm": "Standard Generalized Markup Language",
               "Acronym": "SGML",
               "Abbrev": "ISO 8879:1986",
               "GlossDef": {
                  "para": "A meta-markup language, used to create markup languages such as DocBook.",
                  "GlossSeeAlso": ["GML", "XML"]
               },
               "GlossSee": "markup"
            }
         }
      }
   }
}

4047
2017-10-28 21:01



Non, les commentaires du formulaire //… ou /*…*/ ne sont pas autorisés dans JSON. Cette réponse est basée sur:

  • http://www.json.org
  • RFC 4627: le application/json Type de support pour la notation d'objet JavaScript (JSON)
  • RFC 7159 Le format d'échange de données JSON (JavaScript Object Notation) - Obsoletes: 4627, 7158

1566
2017-11-15 09:32



Inclure des commentaires si vous choisissez dépouillez-les avec un minifier avant d'analyser ou de transmettre.

Je viens de sortir JSON.minify () qui supprime les commentaires et les espaces d'un bloc de JSON et en fait un JSON valide qui peut être analysé. Donc, vous pourriez l'utiliser comme:

JSON.parse(JSON.minify(my_str));

Quand je l'ai publié, j'ai eu un énorme contrecoup de gens en désaccord même avec l'idée de cela, alors j'ai décidé que j'écrirais un blog complet sur pourquoi les commentaires ont du sens dans JSON. Il inclut ce commentaire remarquable du créateur de JSON:

Supposons que vous utilisez JSON pour conserver les fichiers de configuration que vous souhaitez annoter. Allez-y et insérez tous les commentaires que vous aimez. Ensuite, dirigez-le via JSMin avant de le transmettre à votre analyseur JSON. - Douglas Crockford, 2012

J'espère que cela sera utile à ceux qui ne sont pas d'accord avec JSON.minify () pourrait être utile.


677
2018-06-23 18:20



Les commentaires ont été supprimés de JSON par conception.

J'ai supprimé les commentaires de JSON parce que j'ai vu des gens les utiliser pour tenir des directives d'analyse, une pratique qui aurait détruit l'interopérabilité. Je sais que le manque de commentaires rend certaines personnes tristes, mais ce ne devrait pas être le cas.

Supposons que vous utilisez JSON pour conserver les fichiers de configuration que vous souhaitez annoter. Allez-y et insérez tous les commentaires que vous aimez. Ensuite, dirigez-le via JSMin avant de le transmettre à votre analyseur JSON.

La source: Déclaration publique de Douglas Crockford sur G +


378
2018-06-11 08:52



AVIS DE NON-RESPONSABILITÉ: VOTRE GARANTIE EST ANNULÉE

Comme cela a été souligné, ce hack tire parti de la mise en œuvre de la spécification. Tous les analyseurs JSON ne comprendront pas ce type de JSON. Les analyseurs de diffusion en particulier vont s'étouffer.

C'est une curiosité intéressante, mais vous ne devrait vraiment pas l'utiliser pour quoi que ce soit du tout. Voici la réponse originale.


J'ai trouvé un petit hack qui vous permet de placer des commentaires dans un fichier JSON qui n'affectera pas l'analyse, ou modifier les données représentées de quelque façon que ce soit.

Il semble que lorsque vous déclarez un objet littéral, vous pouvez spécifier deux valeurs avec la même clé, et la dernière a la priorité. Croyez-le ou non, il s'avère que les parseurs JSON fonctionnent de la même manière. Nous pouvons donc utiliser ceci pour créer des commentaires dans le JSON source qui ne seront pas présents dans une représentation d'objet analysé.

({a: 1, a: 2});
// => Object {a: 2}
Object.keys(JSON.parse('{"a": 1, "a": 2}')).length; 
// => 1

Si nous appliquons cette technique, votre fichier JSON commenté pourrait ressembler à ceci:

{
  "api_host" : "The hostname of your API server. You may also specify the port.",
  "api_host" : "hodorhodor.com",

  "retry_interval" : "The interval in seconds between retrying failed API calls",
  "retry_interval" : 10,

  "auth_token" : "The authentication token. It is available in your developer dashboard under 'Settings'",
  "auth_token" : "5ad0eb93697215bc0d48a7b69aa6fb8b",

  "favorite_numbers": "An array containing my all-time favorite numbers",
  "favorite_numbers": [19, 13, 53]
}

Le code ci-dessus est JSON valide. Si vous l'analysez, vous obtiendrez un objet comme celui-ci:

{
    "api_host": "hodorhodor.com",
    "retry_interval": 10,
    "auth_token": "5ad0eb93697215bc0d48a7b69aa6fb8b",
    "favorite_numbers": [19,13,53]
}

Ce qui signifie qu'il n'y a aucune trace des commentaires, et qu'ils n'auront pas d'effets secondaires bizarres.

Piratage heureux!


192
2017-08-02 13:46



JSON ne prend pas en charge les commentaires. Il n'a également jamais été prévu d'être utilisé pour les fichiers de configuration où des commentaires seraient nécessaires.

Hjson est un format de fichier de configuration pour les humains. Syntaxe détendue, moins d'erreurs, plus de commentaires.

Hjson intro

Voir hjson.org pour les bibliothèques JavaScript, Java, Python, PHP, Rust, Go, Ruby et C #.


123
2018-03-20 15:26



Tu ne peux pas. Au moins c'est mon expérience d'un coup d'oeil rapide à json.org.

JSON a sa syntaxe visualisée sur cette page. Il n'y a aucune note sur les commentaires.


95
2017-10-28 20:42



Envisagez d'utiliser YAML. C'est presque un surensemble de JSON (pratiquement tous les JSON valides sont des YAML valides) et il permet des commentaires.


86
2017-08-31 02:24