.fw files.wiki
JSON

Archivos JSON

Notación de Objetos de JavaScript

JSON es un formato de intercambio de datos basado en texto para valores estructurados como objetos, matrices, cadenas, números, booleanos y null.

JavaScript Object Notation (JSON)

Más común
Desarrollador
Douglas Crockford; estandarizado por ECMA International y IETF
Categoría
Datos y texto
Tipo MIME
application/json
Formato
Texto
Primera versión
2001
Última versión
RFC 8259 / ECMA-404 2nd edition
Estándar abierto
Sí

JSON-LD 1.1

Desarrollador
World Wide Web Consortium (W3C)
Tipo MIME
application/ld+json
Formato
Texto
Primera versión
2014
Última versión
JSON-LD 1.1
Estándar abierto
Sí

GeoJSON

Desarrollador
Grupo de trabajo de GeoJSON; estandarizado por IETF
Tipo MIME
application/geo+json
Formato
Texto
Primera versión
2008
Última versión
RFC 7946
Estándar abierto
Sí

JSON Text Sequences

Desarrollador
IETF
Tipo MIME
application/json-seq
Formato
Texto
Bytes mágicos
1E
Primera versión
2015
Última versión
RFC 7464
Estándar abierto
Sí

Abrir un archivo .JSON en línea

Leyendo el archivo…

¿Qué es un archivo .JSON?

Los archivos .json normalmente consisten en JavaScript Object Notation, que es una serialización de texto plano independiente del lenguaje que se usa para crear pares nombre/valor. ECMA-404 y el RFC 8259 del IETF especifican hoy su uso después de la adopción generalizada de JSON durante los años 2000, cuando Douglas Crockford introdujo su especificación. El RFC 8259 define un texto .json como no necesariamente estructurado de forma fija en el nivel raíz, ya que la entidad JSON de nivel superior podría ser cualquier objeto, una secuencia ordenada, una cadena, un número, un valor Boolean o un valor null. Por lo tanto, las extensiones de archivo .json existen en API web, configuración de aplicaciones, paquetes de software, registros, archivos de exportación, partidas guardadas de juegos, entre otros.

Varios formatos similares también hacen uso de esta extensión. Los archivos JSON-LD podrían usar .json cuando contienen términos de datos enlazados como "@context", "@id" y "@type", y prefieren otra extensión llamada .jsonld. Los datos GeoJSON podrían almacenarse tanto con .json como con otra extensión común llamada .geojson, pero deberían contener algunos términos clave como type, Feature, FeatureCollection, geometry, coordinates, properties, etc. Otro formato llamado JSON Text Sequences del IETF incluye cada texto JSON precedido por el byte específico 0x1E (record separator) en cada texto, así que estos datos se transmiten en flujo, no se editan manualmente.

Esto significa que, para este grupo de extensiones, abrir un archivo en el editor de texto y examinar las palabras clave específicas del dominio es una de las formas más rápidas.

Cómo abrir un archivo .JSON

Abrir un archivo .JSON en Windows

  1. 1 Ve a la carpeta donde está tu archivo en Explorador de archivos. Normalmente, los archivos descargados terminan en Descargas.
  2. 2 Haz doble clic en tu archivo .JSON si tienes una aplicación para archivos .json en tu equipo. Si no se abre, pasa al paso tres.
  3. 3 Haz clic derecho en tu archivo .JSON -> selecciona Abrir con -> Elegir otra aplicación.
  4. 4 Elige Visual Studio Code en la lista (Windows 11: elige Siempre). En Windows 10 -> marca "Usar siempre esta aplicación para abrir archivos .json" y haz clic en Aceptar.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Windows

Abrir un archivo .JSON en macOS

  1. 1 En la app Finder, localiza tu archivo .JSON.
  2. 2 Solo haz doble clic en tu archivo .JSON para abrir automáticamente el programa asociado con él.
  3. 3 ¿Necesitas otra app en tu Mac? Haz Control-clic en el archivo (o clic derecho con el mouse). En el menú emergente, selecciona Abrir con -> Visual Studio Code.
  4. 4 Si no aparece en la lista, elige Otra… y busca la aplicación manualmente.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para macOS

Abrir un archivo .JSON en Linux

  1. 1 Abre tu gestor de archivos. Según el escritorio, puede llamarse Archivos (GNOME), Dolphin (KDE Plasma), Nemo (Cinnamon) o Thunar (Xfce).
  2. 2 Haz doble clic en el archivo.
  3. 3 O elige otro programa haciendo clic derecho en el archivo -> Abrir con -> Visual Studio Code.
  4. 4 Instala Visual Studio Code (si no está instalado en tu equipo) desde el centro de software, el repositorio o Flathub.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Linux

Abrir un archivo .JSON en Android

  1. 1 Abre Archivos u otra app de gestión de archivos.
  2. 2 En Descargas, busca el archivo .JSON y ábrelo tocándolo.
  3. 3 Se mostrará una lista de apps capaces de abrir el archivo. Toca Mozilla Firefox y pulsa Siempre para asociar de forma permanente este tipo de archivo con esta app.
  4. 4 ¿No hay ninguna app capaz de abrir este archivo? Descarga Mozilla Firefox desde Google Play Store.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Android

Abrir un archivo .JSON en iPhone / iPad

  1. 1 Usa la app Archivos y ve a En mi iPhone, iCloud Drive o Descargas.
  2. 2 Toca el archivo .JSON que quieras abrir.
  3. 3 Si el archivo puede abrirse con una app integrada de iOS (formato compatible), se abrirá automáticamente.
  4. 4 Mantén pulsado el archivo para abrir el menú contextual -> elige Compartir -> selecciona Mozilla Firefox en la lista de apps.
  5. 5 Si no aparece esa opción, primero descarga la app desde el App Store y luego toca el documento otra vez.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para iPhone / iPad

Abrir un archivo .JSON en línea

  1. 1 Ve al visor en línea en la parte superior de esta página.
  2. 2 Arrastra el archivo hasta allí o selecciónalo, y su contenido aparecerá en la pestaña de tu navegador. El archivo no se sube.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para En línea

Más detalles sobre cómo abrir archivos .JSON

Para Windows se puede utilizar Visual Studio Code, Notepad++, Sublime Text, Firefox, Chrome, Python, jq, QGIS, GDAL y ArcGIS Pro para abrir archivos JSON. Sería posible manipular la información a través de esas aplicaciones y además tales programas como Visual Studio Code, Notepad++ y Sublime Text permiten resaltar el texto mientras que Python y jq son especialmente buenas opciones para la validación o el formato correcto si es necesario. En el caso de que estés tratando con GeoJSON (o cualquier tipo de archivos JSON geográficos) QGIS, GDAL y ArcGIS Pro harán el mejor trabajo así que en general una lista de opciones gratuitas incluiría Visual Studio Code gratuito, Sublime Text, QGIS, GDAL, Python y jq aunque Notepad++, Firefox y Chrome también podrían llamarse así; sin embargo no olvides que ArcGIS Pro es un programa de pago. En cuanto a la opción de macOS, TextEdit permitirá ver archivos pequeños pero Visual Studio Code, Sublime Text, BBEdit, Python, jq, QGIS y GDAL se ocuparán de archivos complejos o grandes. BBEdit ofrece un modo gratuito y una actualización de pago; el visor estándar de macOS y TextMate son otras opciones gratuitas.

En cuanto a la posibilidad de verlo en Android, Linux e iOS solo podrás ver el JSON a través de las aplicaciones Firefox y Chrome pero para ver todos tus datos en un visor especial necesitarás un editor hecho especialmente para los desarrolladores. Una respuesta de tipo MIME "application/json" debería abrirse en un visor JSON interno especial mientras que el archivo .json abierto a través de la interfaz del navegador en realidad solo muestra como un texto plano en Firefox/Chrome. En caso de que estés tratando con GeoJSON usa QGIS, ArcGIS Pro o una aplicación de visualización de mapas web y con respecto a JSON-LD existen validadores y editores RDF porque esos formatos se basan principalmente en la expansión de @context.

Detalles técnicos

En esencia el formato JSON es un archivo de texto plano y no binario. Los archivos .json aleatorios no tienen ningún valor de números mágicos; no pueden tener ninguna estructura de encabezado/pie de archivo fijo; no tienen compatibilidad con una jerarquía de carpetas incorporada; y tampoco tienen funciones de compresión de la estructura de archivos. El tipo MIME típico para JSON es: application/json. Formatos de archivos relacionados con JSON son: application/ld+json (JSON-LD); application/geo+json (GeoJSON); y application/json-seq (Secuencias de texto JSON).

El modelo de datos para JSON según RFC 8259: objetos, arreglos, cadenas, números, verdadero, falso y nulo. Todas las claves para los miembros de un objeto se almacenan únicamente como cadenas. Se aceptan espacios en blanco fuera de las comillas: generalmente espacios en blanco (espacios, tabulaciones, etc). Los comentarios y las comas finales están prohibidos en el formato JSON; se pueden especificar secuencias de escape de los caracteres por: \t, ", \\, \uXXXX, \n. La representación a través del uso del valor de punto de código en UTF-8 también está apoyada en los datos de cadena de un formato de archivo. Los números apoyan representaciones de literales numéricos decimales. Sólo. No NaN/Infinitos en JSON.

Mediante RFC 8259 el intercambio de datos entre sistemas usando JSON tiene que realizarse usando la codificación de caracteres UTF-8. Aunque, analizadores más antiguos podrían poder analizar texto en formatos como: UTF-16, UTF-32 siempre y cuando se utilice correctamente la Marca de Orden de Bytes para determinar la codificación correcta. Debido al hecho de que los archivos .json de JSON carecen de una estructura de encabezado-pie fijo no hay forma de indicar el primer byte significativo. Las Secuencias de texto JSON emplean el uso del carácter RS y como resultado el archivo puede comenzar con el valor de byte 0x1E cuando el primer elemento se coloque justo después de este separador en una secuencia.

El formato JSON no ofrece ningún esquema específico del archivo ni un área de metadatos y tampoco contiene información de versión. Debido a RFC 8259 y la segunda edición de las especificaciones ECMA-404 JSON se considera como una sintaxis estable y existen perfiles de JSON con respecto a JSON-LD 1.1 y el formato GeoJSON. Las implementaciones de analizadores pueden usar las siguientes políticas diferentes para el apoyo de miembros de objetos duplicados, la precisión de la representación numérica y los rangos de enteros. También dependiendo de los casos de uso el tamaño de un archivo JSON puede abarcar desde varios bytes hasta varios gigabytes.

Cómo convertir archivos .JSON

La impresión legible y la minimización de valores JSON no provocan pérdida de información, ya que solo alteran el espacio en blanco de esos archivos. Si hace falta para validación o para revisión, se podría usar python -m json.tool input.json output.json para lo mismo en Python, mientras que jq -c . input.json > output.json funcionaría para reducir el espacio en blanco innecesario y obtener tamaños más pequeños.

El archivo CSV se puede producir fácilmente si la entrada es un arreglo de objetos con un solo nivel. También se podría hacer mediante el siguiente patrón: jq -r '(.[] | keys_unsorted) as $keys | $keys, (.[] | [.[$keys[]]]) | @csv' input.json > output.csv. El uso de YAML sería una buena solución, ya que el formato admite JSON de forma nativa como subconjunto de YAML versión 1.2.

Con yq -P -o=yaml input.json > output.yaml se reescribiría toda la estructura de datos, mientras que no hay forma de añadir anclajes ni comentarios a YAML a partir de una fuente en formato JSON. También es posible realizar la conversión al formato XML usando la biblioteca necesaria, aunque los arreglos, los espacios de nombres, los atributos o el contenido mixto requerirían una regla de mapeo aparte. Eso podría llevar a una pérdida de información durante el proceso de traducción de vuelta.

Las siguientes herramientas podrían usarse para traducir a GeoPackage, KML, Shapefile, PostGIS, entre otros formatos: ogr2ogr. JSON-LD podría reescribirse como Turtle, N-Quads, expanded, compacted y RDF/XML usando el software correspondiente. Para convertir un archivo JSON a Excel, primero debería normalizarse como una tabla rectangular, ya que cambiar solo los nombres no ayudaría en absoluto.

Convertir aHerramientaComando / nota
Pretty-printed JSON Python python -m json.tool input.json output.json Valida la sintaxis y reescribe con sangría; el orden de los miembros de los objetos puede conservarse en Python moderno, pero el orden semántico de JSON no es significativo.
Minified JSON jq jq -c . input.json > output.json Elimina el espacio en blanco insignificante y conserva los valores JSON.
CSV jq jq -r '(.[] | keys_unsorted) as $keys | $keys, (.[] | [.[$keys[]]]) | @csv' input.json > output.csv Funciona con una matriz de nivel superior de objetos de forma similar; los objetos y matrices anidados deben aplanarse o serializarse como cadenas.
YAML yq yq -P -o=yaml input.json > output.yaml YAML puede representar valores JSON directamente, pero los comentarios no se pueden recuperar porque JSON no tiene.
GeoPackage from GeoJSON JSON GDAL ogr2ogr ogr2ogr -f GPKG output.gpkg input.json Se aplica cuando el archivo .json es GeoJSON válido; las suposiciones del sistema de referencia de coordenadas siguen RFC 7946 salvo que la herramienta las reemplace.
ESRI Shapefile from GeoJSON JSON GDAL ogr2ogr ogr2ogr -f 'ESRI Shapefile' output_directory input.json Shapefile tiene limitaciones estrictas de nombre de campo, tipo, geometría y tamaño, por lo que los atributos o el detalle de la geometría pueden truncarse.
RDF N-Quads from JSON-LD jsonld-cli jsonld toRDF input.json -q > output.nq Se aplica a documentos JSON-LD; el contexto de compactación y el diseño de JSON no se conservan en la salida RDF.

Problemas comunes y soluciones

La mayoría de los errores comunes de JSON suelen significar que algo está mal con la sintaxis. En JavaScript, el error "unexpected token" suele significar que hay algunos JSON no válidos, como páginas de error HTML con extensión .json, comentarios o una coma final después del último elemento. El error “Expecting property name enclosed in double quotes” suele significar que tu archivo no se escribió como JSON, sino como JavaScript Object Literal, sin poner comillas a las claves de las cadenas, lo cual está prohibido por la sintaxis de RFC 8259.

Los errores "Extra Data" y "Multiple JSON Values" aparecen cuando algún parser espera solo un JSON completo y estás trabajando con un archivo JSON con una entrada por línea o con un archivo JSON Text Sequences (RFC 7464). Para corregir este problema, solo encuentra otro parser que pueda reconocer estos formatos, o simplemente divide esos registros antes de importarlos. A veces aparecen problemas de codificación por el reemplazo de caracteres, un error de análisis alrededor de la marca BOM y cosas como caracteres de control en las cadenas. Intenta volver a guardar los archivos en formato UTF-8 y eliminar esos bytes ilegales, como marcas de tabulación, saltos de línea y demás.

Cuando .json es bastante grande, puede congelar algunos programas (Visual Studio Code, Chrome, Firefox, online file-viewer, etc.), así que intenta usar herramientas como jq, algunas funciones de procesamiento en streaming del lenguaje Python, algunas utilidades de bases de datos para importar el contenido del archivo JSON sin abrirlo en una GUI, o dividir el archivo JSON. La mayoría de los parsers aceptan la clave duplicada de un objeto, pero conservan solo la última, así que valida la fuente antes del procedimiento de importación. Cuando se trata de GeoJSONs, puede abrirse correctamente, pero las coordenadas de los objetos de ese archivo podrían ser incorrectas por el orden erróneo de latitud y longitud o por un CRS incompatible.

Consideraciones de seguridad

JSON no cuenta con funciones como macros, execs, scripts ni código que se ejecute automáticamente en datos de RFC 8259. Sin embargo, JSON puede volverse peligroso si lo lee un parser vulnerable o una aplicación anfitriona debido a deserialización, contaminación de prototipos, inyección de comandos, inyecciones SQL y otros procedimientos dañinos que agotan los recursos del programa y lo vuelven peligroso. Es necesario usar siempre un parser JSON dedicado para evitar pasar JSON a eval - usa JSON.parse, Python json, Jackson/Gson para programas Java, o usa las bibliotecas serde_json y jq.

Un JSON que sea grande o demasiado profundo puede consumir memoria en exceso, provocar desbordamientos de pila y tardar demasiado en analizarse. Por eso hay que imponer máximos en su profundidad y en el tiempo de validación, y también usar un análisis estricto en caso de que no quieras que se usen funciones JSON desconocidas. El contenido de JSON puede incluir secretos como claves API, tokens de acceso, cookies, contraseñas, coordenadas GPS y muchos otros, y GeoJSON también podría incluir coordenadas, así como rutas de viaje y líneas de límite. JSON-LD podría cargar un contexto malicioso cuando se usan contextos no almacenados en caché.

Historia y versiones

"JSON surgió de la notación de literales de objetos de JavaScript y fue promovido por Douglas Crockford alrededor de 2001 y sirvió como un reemplazo fácil de XML." La descripción de json.org contribuyó en gran medida a la rápida adopción de JSON en la generación inicial de aplicaciones AJAX durante la primera mitad de la década que comenzó en el año 2000. En 2006, RFC 4627 definió application/json y limitó un texto JSON a ser un único objeto o arreglo en el nivel más alto.

"La especificación de 2013 ECMA-404 proporciona una definición compacta y formalmente precisa de la sintaxis de JSON." El documento de 2014 "RFC 7159 removes the top-level restrictions on the JSON text." RFC 8259, publicado más tarde en 2017, reemplaza a RFC 7159 y define JSON en IETF como un estándar en la vía de Internet Standards-track. La especificación de JSON también existe como documento estandarizado en ECMA International con ECMA-404, 2nd edition, actualmente activo. JSON-LD se convirtió en una Recomendación del W3C en 2014, mientras que la versión 1.1 se publicó en 2020. "JSON-LD can represent graph structure as required by the semantic web" junto con anotaciones de schema.org. GeoJSON surgió entonces como una especificación de la comunidad en 2008 y se especificó en IETF en 2016 mediante RFC 7946.

Mientras que los archivos XML usan el Lenguaje de marcado extensible, pueden tener atributos, espacios de nombres y esquemas, y permiten contenido mixto, esas propiedades no están disponibles en los archivos JSON. Sin embargo el tamaño se vuelve un problema .xml incluirá un número mucho mayor de caracteres en comparación con un archivo .json estándar.

Los archivos YAML, que tienen los nombres ya sea de .yaml o .yml ofrecen un formato legible por humanos de codificación, comentarios y anclajes pero tienen una estructura compleja del análisis gramatical y en el pasado tuvieron vulnerabilidades al analizarlos. Los archivos TOML (.toml), principalmente archivos de configuración, permiten codificar usando comentarios también. Los escalares aquí están claramente definidos. Sin embargo los archivos TOML pueden ser mejores para estructuras jerárquicas más que para estructuras profundamente anidadas.

Los archivos CSV (.csv) son buenos para la presentación concisa de la información, tablas rectangulares pueden ser representadas aquí; sin embargo objetos y arreglos anidados no pueden ser incluidos. Por otro lado los archivos de tipo JSON Lines se llaman .jsonl o .ndjson y cada archivo contiene un objeto JSON por línea en lugar del arreglo JSON único habitual de nivel superior.

En el caso de uso de datos geográficos o de datos enlazados es crucial usar formatos especiales: GeoJSON (GIS, .geojson) respectivamente Linked-data/JSON-LD (.jsonld).

Comentarios (0)

Respondiendo a

Aún no hay comentarios. Sé el primero en compartir tu experiencia con este tipo de archivo.