Header Ads Widget

Ticker

6/recent/ticker-posts

Uso de comentarios en JSON con ejemplos de Node.js y JavaScript

 En este artículo, aprenderemos a usar comentarios en archivos JSON. Veremos soluciones y métodos utilizados por los desarrolladores para agregar comentarios de una sola línea y de varias líneas a sus archivos JSON, las bibliotecas externas y paquetes para eliminar comentarios de sus archivos antes de alimentarlos con el JSON.parse()método habitual en JavaScript y Node.js y también veremos código JavaScript simple para eliminar comentarios sin bibliotecas externas. Finalmente, veremos los formatos alternativos a JSON que admiten comentarios como JSON5 y JSONC.

JSON no admite comentarios.

Como ya sabrá, JSON no admite comentarios. Pero como programadores, estamos acostumbrados a agregar comentarios, por lo que en este artículo veremos las posibles formas en que tenemos que usar los comentarios en nuestros archivos JSON, incluso si el formato los admite de forma nativa.

De hecho, los comentarios no siempre faltaban en JSON, pero se eliminaron más tarde.

Esta es la razón por la que se eliminan los comentarios de JSON según lo declarado por Douglas Crockford .

Eliminé los comentarios de JSON porque vi que la gente los usaba para mantener directivas de análisis, una práctica que habría destruido la interoperabilidad.

JSON puede ser necesario principalmente si usa JSON para sus archivos de configuración, incluso si JSON en primer lugar no fue diseñado para este propósito, sino para intercambiar datos, pero lo vemos hoy en día usado como formato de configuración en muchas aplicaciones.

Por ejemplo, el tsconfig.jsonarchivo que es el archivo de configuración de TypeScript permite comentarios, consulte microsoft / TypeScript # 4987 .

También puede utilizar comentarios para comentar valores en sus archivos de datos al realizar pruebas en lugar de eliminarlos.

Como desarrolladores, siempre tendemos a encontrar una solución a nuestros problemas y en caso de comentarios JSON, también tenemos soluciones, vamos a explorarlo.

Agregar comentarios como atributos de datos JSON

Dado que JSON es un formato basado en texto para almacenar e intercambiar datos usando pares clave-valor, podemos usar comentarios como pares de datos.

Por ejemplo, este es un simple dato JSON:

{
   "name": "Product 1",
   "cost": "10USD",
   "count": 100
}

Simplemente podríamos agregar un elemento de datos designado llamado "__comment":

{
   "__comment": "This is a comment!",
   "name": "Product 1",
   "cost": "10USD",
   "count": 100
}

Usamos el subrayado como una convención para diferenciar los comentarios del resto de datos, desde el primer vistazo, incluso si el nombre de la clave dice explícitamente que es un comentario, pero aún así puede ser una buena convención para evitar colisiones ya que podemos variar bien. tener claves de datos válidas con el mismo nombre.

Tenga en cuenta que, dado que el formato JSON ya no admite comentarios, se analizarán y procesarán como cualquier otro dato JSON en sus aplicaciones.

Analizar JSON con JavaScript y Node.js

Por ejemplo, si usamos Node.js para analizar un products.jsonarchivo con los datos JSON anteriores:

const fs = require('fs');
const path = require('path');

let data = fs.readFileSync(path.resolve(__dirname, 'product.json'));
let product = JSON.parse(data);
console.log(product["__comment"]); // Output: This is a comment!

La __commentclave y su valor se analizaron en el objeto JSON y se puede acceder a ellos por el nombre de la clave al igual que los otros datos JSON.

Agregar comentarios de varias líneas en JSON

También puede usar el siguiente formato para agregar comentarios de varias líneas en JSON:

{
  "//": "This is a comment",
  "//": "This is a second comment"
}

Se utiliza en la documentación de Google Firebase .

Dado que JSON y JavaScript estrictamente ligado no permiten claves de valores duplicadas, puede agregar una letra o número único para validarlo:

{
    "//a": "This is the first comment.",
    "//b": "This is the second second." 
}

Consulte esta esencia para obtener más detalles.

También puede agregar varios comentarios de la siguiente manera:

{
    "Comments": [
        "First comment,",
        "Second comment"
    ]
}

Agregar comentarios en JSON con herramientas externas

También podemos crear herramientas que procesen previamente archivos JSON y eliminen comentarios de nuestros archivos antes de analizarlos con bibliotecas JSON para que no obtengamos errores de análisis.

Esto nos permite la posibilidad de utilizar comentarios en cualquier forma que queramos y evitar agregarlos como datos. Por ejemplo, podemos usar el formulario de comentarios popular que se encuentra en muchos lenguajes de programación de estilo C. Por ejemplo:

// This is a comment
/* This is a comment */
{
   "name": "Product 1",
   "cost": "10USD",
   "count": 100
}

Las herramientas populares que le ayudan a eliminar comentarios de sus archivos JSON antes de analizarlos incluyen:

  • El GYP de Google admite comentarios de estilo #,
  • JSON.minify lo ayudará a descartar comentarios de estilo C / C ++ con JavaScript / Node.js,
  • JSMin es una herramienta de minificación para JavaScript que elimina comentarios y espacios en blanco innecesarios de los archivos JavaScript, pero se puede utilizar para archivos JSON.
  • Hjson : una interfaz de usuario para JSON que le permite utilizar comentarios para documentar sus datos en línea. También puede utilizarlos para comentar valores al realizar pruebas,
  • strip-json-comments : Reemplazará los comentarios de una sola línea //y los comentarios de varias líneas /**/con espacios en blanco. Esto permite que las posiciones de error JSON permanezcan lo más cerca posible de la fuente original. También disponible como complemento Gulp / Grunt / Broccoli ,
  • comment-json : analiza y codifica JSON con comentarios en JavaScript / Node.js. Retendrá los comentarios incluso después de guardarlos.
  • nlohmann / json : un analizador JSON para C ++ moderno que proporciona soporte opcional para ignorar los comentarios sobre el análisis. Como lo declaró el creador de JSON, está bien agregar comentarios a sus datos JSON siempre que use una herramienta para eliminarlos antes de analizar el archivo:

Suponga que está usando JSON para mantener los archivos de configuración, que le gustaría anotar. Adelante, inserta todos los comentarios que te gusten. Luego, canalícelo a través de JSMin antes de entregárselo a su analizador JSON. Douglas Crockford, 2012 .

JSON5 admite comentarios

El formato de intercambio de datos JSON5 (JSON5) es un superconjunto de JSON que tiene como objetivo aliviar algunas de las limitaciones de JSON ampliando su sintaxis para incluir algunas producciones de ECMAScript 5.1.

Este es un ejemplo de datos JSON5 válidos:

{
  // comments
  unquoted: 'and you can quote me on that',
  singleQuotes: 'I can use "double quotes" here',
  lineBreaks: "Look, Mom! \
No \\n's!",
  hexadecimal: 0xdecaf,
  leadingDecimalPoint: .8675309, andTrailing: 8675309.,
  positiveSign: +1,
  trailingComma: 'in objects', andIn: ['arrays',],
  "backwardsCompatible": "with JSON",
}

Así es como se puede instalar y utilizar:

npm install json5;
const JSON5 = require('json5');
JSON5.parseJSON();

El esquema JSON admite comentarios

JSON Schema es un vocabulario que le permite anotar y validar documentos JSON.

La palabra clave $ comment está estrictamente destinada a agregar comentarios a la fuente del esquema JSON. Ver referencia

JSONC: JSON con propuesta de comentarios

Jsonc es un formato json simplificado que permite comentarios y valores sin comillas delimitados por espacios en blanco. Un archivo con formato jsonc se puede transformar en un archivo json. Los comentarios se eliminarán y se agregarán citas.

Jsonc se usa como formato alternativo en muchos IDE que usan JSON. Por ejemplo, Visual Studio Code le permite configurar JSONC en lugar de JSON:

"files.associations": {
  "*.master": "html",
  "*.json": "jsonc"
}

Análisis de comentarios en JSON con JavaScript y Node.js

Si necesita una solución simple para agregar comentarios al archivo JSON sin utilizar bibliotecas externas, puede analizar previamente el archivo antes de analizarlo con los módulos JSON reales. Por ejemplo, puede utilizar el siguiente código JavaScript:

const stripJSONComments = (data) => {
  var re = new RegExp("\/\/(.*)","g");
  return data.replace(re,'');
}

var jsonData = fs.readFileSync(fileName,'utf8');
jsonData = stripJSONComments(jsonData);
var jsonObject = JSON.parse(jsonData);

Primero leemos el archivo JSON en una variable. A continuación, hace uso de una expresión regular para eliminar los comentarios de una sola línea, es decir, "//" del archivo, y finalmente analiza la sintaxis JSON utilizando el JSON.parse()método. Puede modificar el estándar para admitir comentarios de varias líneas.

Conclusión

JSON no admite comentarios por diseño. Pero como podemos ver en la práctica, en muchas situaciones los desarrolladores tienden a usar comentarios siguiendo varios trucos y convenciones e incluso usando bibliotecas y complementos que analizan previamente los archivos JSON y eliminan cualquier comentario antes de enviar la salida al analizador JSON normal. Los comentarios también se admiten de forma nativa en muchos formatos superconjuntos de JSON, como JSON5 y YAML, etc.

Publicar un comentario

0 Comentarios