JSON (JavaScript Object Notation) es un formato de texto pensado para el intercambio de datos. Su sintaxis está basada originalmente en la sintaxis de JavaScript, pero realmente es independiente de cualquier lenguaje de programación.
El formato JSON fue definido por Douglas Crockford a finales de 2002 y dado a conocer a través de su página web http://json.org/. Esta página contenía la definición del formato y una implementación en Java. En poco tiempo el uso del formato se extendió y aparecieron implementaciones para todos los lenguajes de programación. El motivo de su éxito es su sencillez y facilidad de uso.
El formato JSON se ha publicado además en forma de norma, tanto por la IETF como por ECMA, que también han definido otros formatos derivados como I-JSON.
Las últimas versiones de las normas son las siguientes:
Las reglas sintáctica de JSON son bastante sencillas:
[1, "pepe", 3.14, "Pepito Conejo"]
{"nombre": "Pepito Conejo", "edad": 25, "carnet de conducir": true}
[1, 2, 3], ["a", "b", "c"]
"nombre": "Pepito Conejo"
{"nombre": "Pepito Conejo",}
["nombre": "Pepito Conejo", "edad": 25, "carnet de conducir": true, ]
[
{
"nombre": "Pepito Conejo",
"edad": 25,
"carnet de conducir": true
},
{
"nombre": "Ana Barberá",
"edad": 90,
"carnet de conducir": false
}
]
JSON se utiliza cada vez más en la web como sintaxis para usos concretos.
En informática, los procedimientos remotos son una característica de los sistemas distribuidos. En un programa está distribuido entre varios ordenadores, los procedimientos remotos permiten que una parte del programa ejecute otra parte del programa situada en otro ordenador de forma transparente, es decir, sin que el programador se tenga que preocupar de dónde está situada cada parte.
En general, cuando que un programa solicita información a otro programa situado en otro ordenador podemos decir que se trata de una llamada a un procedimiento remoto, aunque los dos programas sean completamente independientes.
JSON-RPC es un formato para el intercambio de información entre dos programas. Utiliza la notación JSON y define una estructura y unos campos mínimos útiles para dar formato tanto a la petición como a la respuesta.
Existen dos versiones de JSON-RPC, pero se recomienda utilizar la segunda versión:
Una llamada RPC tiene que seguir la sintaxis de JSON y contener los siguientes campos:
Si una llamada no incluye identificador id, se considera que es una notificación y no requiere respuesta, ni siquiera en caso de error.
La respuesta RPC tiene que seguir también la sintaxis de JSON y contener los siguientes campos:
Una llamada JSON-RPC puede contener varias peticiones en forma de matriz y se debe contestar con una matriz de respuestas (salvo que todas las llamadas sean notificaciones, en cuyo caso no habría respuesta).
Ejemplos de llamada y respuesta:
{
"jsonrpc": "2.0",
"method": "suma",
"params": [3, 4, 5],
"id": 181203
}
{
"jsonrpc": "2.0",
"result": 12,
"id": 181203
}
JSON-LD es un formato desarrollado por el W3C y que utiliza la sintaxis de JSON para representar información referida a un elemento (un objeto, una persona, etc.). La información que se ofrece en un bloque de datos JSON-LD sobre un elemento consiste en una lista de características de ese elemento.
Grupo de trabajo JSON-LD en el W3C: Homepage - Charter: 2018-2020
Recomendaciones publicadas:
Las versiones obsoletas de las normas sobre JSON son las siguientes:
Si un editor o IDE de programación quiere permitir trabajar con un lenguaje de programación específico y ofrecer asistentes avanzados (completado de código, sugerencias, etc.), el editor tiene que "entender" ese lenguaje. En vez de que cada editor tenga que implementar su propio servidor de lenguaje, el protocolo LSP permite que el editor y el servidor de lenguaje sean independientes, comunicándose de acuerdo con el formato. Así, un mismo servidor de lenguaje se puede aprovechar en cualquier IDE que admita LSP y un mismo editor o IDE puede utilizarse para programar en cualquier lenguaje que disponga de un servidor de lenguaje.
Este protocolo fue desarrollado para el editor Visual Studio Code. Fue presentado en junio de 2016.