Pregunta ¿Se pueden usar comentarios en JSON?


¿Puedo usar comentarios dentro de un archivo JSON? ¿Si es así, cómo?


5777
2017-10-28 20:39


origen


Respuestas:


No.

Todos los JSON deben ser datos, y si incluye un comentario, también serán datos.

Podría tener un elemento de datos designado llamado "_comment" (o algo) que sería ignorado por las aplicaciones que usan los datos JSON.

Probablemente sea mejor tener el comentario en los procesos que genera / recibe el JSON, ya que se supone que deben saber con anticipación cuáles serán los datos JSON, o al menos la estructura del mismo.

Pero si decidiste:

{
   "_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



No, comentarios del formulario //… o /*…*/ no están permitidos en JSON. Esta respuesta se basa en:

  • http://www.json.org
  • RFC 4627: los application/json Tipo de medio para la notación de objetos JavaScript (JSON)
  • RFC 7159 Formato de intercambio de datos de JavaScript Object Notation (JSON) - Obsoletos: 4627, 7158

1566
2017-11-15 09:32



Incluya comentarios si elige; elimínalos con un minificador antes de analizarlos o transmitirlos.

Acabo de lanzar JSON.minify () que elimina comentarios y espacios en blanco de un bloque de JSON y lo convierte en JSON válido que se puede analizar. Entonces, puedes usarlo como:

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

Cuando lo lancé, recibí una enorme reacción de personas que no estaban de acuerdo incluso con la idea de hacerlo, así que decidí escribir una publicación exhaustiva sobre por qué los comentarios tienen sentido en JSON. Incluye este comentario notable del creador de JSON:

Supongamos que está utilizando JSON para mantener los archivos de configuración que desea anotar. Continúa e inserta todos los comentarios que te gusten. Luego páselo por JSMin antes de entregárselo a su analizador JSON. - Douglas Crockford, 2012

Con suerte, eso es útil para quienes no están de acuerdo con el motivo JSON.minify () Podría ser útil.


677
2018-06-23 18:20



Los comentarios fueron eliminados de JSON por diseño.

Quité los comentarios de JSON porque vi que la gente los estaba usando para mantener las directivas de análisis sintáctico, una práctica que habría destruido la interoperabilidad. Sé que la falta de comentarios hace que algunas personas se sientan tristes, pero no debería.

Supongamos que está utilizando JSON para mantener los archivos de configuración que desea anotar. Continúa e inserta todos los comentarios que te gusten. Luego páselo por JSMin antes de entregárselo a su analizador JSON.

Fuente: Declaración pública de Douglas Crockford sobre G +


378
2018-06-11 08:52



DESCARGO DE RESPONSABILIDAD: SU GARANTÍA ES NULA

Como se ha señalado, este truco aprovecha la implementación de la especificación. No todos los analizadores de JSON entenderán este tipo de JSON. Los analizadores de transmisión en particular se ahogarán.

Es una curiosidad interesante, pero tú realmente no debería usarlo para nada en absoluto. A continuación está la respuesta original.


He encontrado un pequeño hack que te permite colocar comentarios en un archivo JSON que no afectará el análisis sintáctico, o alterar los datos que se representan de ninguna manera.

Parece que al declarar un objeto literal puede especificar dos valores con la misma clave, y el último tiene prioridad. Lo creas o no, resulta que los analizadores JSON funcionan de la misma manera. Entonces podemos usar esto para crear comentarios en el JSON de origen que no estará presente en una representación de objeto analizado.

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

Si aplicamos esta técnica, su archivo JSON comentado podría verse así:

{
  "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]
}

El código anterior es JSON válido. Si lo analiza, obtendrá un objeto como este:

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

Lo que significa que no hay rastro de los comentarios y que no tendrán efectos secundarios extraños.

¡Feliz hacking!


192
2017-08-02 13:46



JSON no admite comentarios. Tampoco fue pensado para ser utilizado para archivos de configuración donde se necesitarían comentarios.

Hjson es un formato de archivo de configuración para humanos. Sintaxis relajada, menos errores, más comentarios.

Hjson intro

Ver hjson.org para las bibliotecas de JavaScript, Java, Python, PHP, Rust, Go, Ruby y C #.


123
2018-03-20 15:26



No puedes. Al menos esa es mi experiencia de un rápido vistazo a json.org.

JSON tiene su sintaxis visualizada en esa página. No hay ninguna nota sobre los comentarios.


95
2017-10-28 20:42



Considera usar YAML. Es casi un superconjunto de JSON (prácticamente todos los JSON válidos son YAML válidos) y permite comentarios.


86
2017-08-31 02:24



Debes escribir un Esquema JSON en lugar. El esquema JSON es actualmente una especificación de borrador de Internet propuesta. Además de la documentación, el esquema también se puede usar para validar sus datos JSON.

Ejemplo:

{
    "description":"A person",
    "type":"object",
    "properties":
        {
            "name":
                {
                    "type":"string"
                },
            "age":
                {
                    "type":"integer",
                    "maximum":125
                }
        }
}

Puede proporcionar documentación utilizando el descripción atributo de esquema.


55
2017-07-28 18:38



Si estás usando Jackson como su analizador JSON, así es como lo habilita para permitir comentarios:

ObjectMapper mapper = new ObjectMapper().configure(Feature.ALLOW_COMMENTS, true);   

Entonces puedes tener comentarios como este:

{
  key: "value" // comment
}

Y también puedes tener comentarios comenzando con # configurando:

mapper.configure(Feature.ALLOW_YAML_COMMENTS, true);    

Pero en general (como se contestó anteriormente) la especificación no permite comentarios.


51
2018-02-06 20:44