JSON es un formato de intercambio de datos, fácil de escribir y leer, que se utiliza hoy en día para compartir información entre diferentes aplicaciones y lenguajes.
Aunque está basado en la sintaxis de JavaScript, es un lenguaje independiente por lo que para leer / guardar deberemos convertirlo antes al formato específico.
JSON permite pasar pares de valores, arrays y objetos, lo que le da una gran capacidad de almacenar datos de todo tipo, de forma fácil y comprensible, que lo ha hecho popular y ha sustituido al formato XML como estandar de intercambio.
Además, el hecho de que WordPress utilice JSON como formato para la REST API también ha influido en su popularidad.
Un ejemplo del formato de JSON:
[
{
"id":1,
"titulo":"titulo de la entrada",
"autor":"autor de la entrada"
},
{
"id":2,
"titulo":"titulo de la segunda entrada",
"autor":"autor de la segunda entrada"
}
]
Debemos tener en cuenta que:
- Los corchetes sólo son necesarios si hay más de un objeto
- Debemos usar comillas dobles
- El último elemento de un objeto y el último elemento de un array no deben llevar coma al final.
Esta herramienta te puede ser muy útil para validar el formato de un archivo .json: https://jsonlint.com/ ↗️
Leer y escribir JSON desde JavaScript
Cómo comentábamos antes, aunque la sintaxis de los archivos JSON es muy similar a JS, no es el mismo lenguaje, por lo que vamos a tener que «traducirlo» al leer o escribir archivos en este formato.
Para ello, tenemos dos funciones disponibles:
JSON.parse()
Nos permite leer archivos JSON y convertirlos en objetos JS
var ejemploJSON = '{"id":1,"title":"titulo de la entrada","autor":"autor de la entrada"}';
var JSONparseado = JSON.parse(ejemploJSON);
//Podemos acceder a las propiedades del objeto:
console.log(JSONparseado.title);
Más información sobre el método JSON.parse() ↗️
JSON.stringify()
Nos sirve para hacer lo contrario, pasando de objetos JavaScript a JSON
JSON.stringify(value, replacer, space)
El parámetro replacer nos permite sustituir algun elemento del array u objeto antes de crear el JSON
var ejemplo = {foundation: 'Mozilla', model: 'box', week: 45, transport: 'car', month: 7};
function replacer(key, value) {
// Filtramos omitiendo todos los elementos de tipo string
if (typeof value === 'string') {
return undefined;
}
return value;
}
JSON.stringify(ejemplo, replacer);
// '{"week":45,"month":7}'
Más información sobre el método JSON.stringify() ↗️
Leer y escribir JSON con PHP
Al igual que JavaScript, PHP tiene sus propios métodos para trabajar con archivos JSON y poder leerlos y escribirlos.
json_decode()
Decodifica una cadena en formato JSON y lo convierte a una variable PHP, objeto u array según el parámetro indicado.
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
/* el resultado sería:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
} */
var_dump(json_decode($json, true));
/* El resultado sería:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
} */
?>
Más información sobre json_decode( ↗️
json_encode()
Transforma un array de PHP, en el formato apropiado, en un objeto JSON:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
// El resultado sería: {"a":1,"b":2,"c":3,"d":4,"e":5}
?>
Más información sobre json_encode() ↗️
Como puedes ver, aunque la intención de este artículo no es profundizar en el uso de JSON, si quería compartir un vistazo general sobre qué es y para que se utiliza, y a partir de aquí que podáis buscar más información según lo que necesitéis.