Tabla de contenidos
¿Qué es un fichero JSON?
¿Hace lo mismo un fichero XML?
Similitudes entre JSON y XML
- Son autodescriptivos, es decir, que el código es legible por humanos.
- Son jerárquicos, almacenan valores dentro de valores respetando un rango.
- Pueden ser analizados y utilizados para muchos lenguajes de programación.
- Se pueden recuperar con un XMLHttpRequest (Peticiones a http y https)
Diferencias entre JSON y XML
- No usa la etiqueta final.
- Es más corto.
- Es más rápido de leer y escribir.
- Puede usar matrices.
- Puede ser analizado por una función estándar de JavaScript (XML debe ser analizado con un analizador XML).
¿Por qué JSON es mejor que XML?
- XML es mucho más difícil de analizar que JSON.
- JSON se analiza en un objeto JavaScript listo para usar.
- Para aplicaciones AJAX, JSON es más rápido y fácil que XML:
- XML:
- Obtiene un documento XML.
- Usa el DOM para recorrer el documento.
- Extrae valores y los almacena en variables.
- JSON:
- Obtiene una cadena JSON.
- Recorrer la cadena JSON.
- XML:
Vamos a crear nuestro JSON en PHP
Preparamos la consulta de SQL
Lo primero que tenemos que hacer para convertir nuestro JSON en PHP,
SELECT JSON_OBJECT("id",idtienda,"nombre",nombre,"direccion",direccion,"cp",cp,"ciudad",ciudad,"provincia",provincia,"cif",cif,"telefono",telefono,"email",email,"paginaweb",paginaweb) as jsonClientes from clientes
Más información: Si quieres saber cómo se utiliza JSON_OBJECT, te dejo su documentación.
Si estás usando SQL Server, se usa FOR JSON PATH y la consulta sería así:
SELECT idtienda,nombre,direccion,cp,ciudad,provincia,cif,telefono,email,paginaweb) as jsonClientes FROM clientes
FOR JSON PATH
PHP
Conexión con la Base de Datos
<?php
//Función para conectarnos con la BBDD
function conectar(){
// Rellenamos todos los datos para conectarnos a la BBDD
$x=new mysqli(
"", // URL
"", // Usuario
"", // Clave
"" // Nombre
);
//En caso de haber un error de conexión a la BBDD...
if ($x->connect_errno){
//Salimos de la conexión con el error
die ("Error: ".$x->mysqli_connect_errno().$x->mysqli_connect_error());
exit();
}
return $x;
}
?>
Vamos a generar nuestro fichero JSON en PHP
header('Content-Type: application/json');
Nos conectamos a la Base de Datos y vamos a recoger los datos de nuestra consulta SQL.
$sqlArray["data"][]
.
1- mostrar la codificación del Array en formato JSON.
2- Guarda en el servidor la codificación del Array en un fichero con formato JSON.
<?php
// Indicamos que este documento va a ser tipo JSON
header('Content-Type: application/json');
session_start();
// Incluímos nuestro fichero bd.php para conectarnos a la BBDD.
include_once("func/bd.php");
// Nos conectamos a nuestra Base de Datos
$c=conectar();
mysqli_set_charset($c,"utf8");
// Indicamos nuestra query
$consulta=$c->query("SELECT JSON_OBJECT("id",idtienda,"nombre",nombre,"direccion",direccion,"cp",cp,"ciudad",ciudad,"provincia",provincia,"cif",cif,"telefono",telefono,"email",email,"paginaweb",paginaweb) as json from clientes");
// Si la consulta está mal formulada, saltará error
if(!$consulta){
die("Error en la consulta SQL");
}
// Recorremos las filas del resultado de la query y lo metemos en un array
while($sql=$consulta->fetch_assoc()){
$sqlArray=$sql;
}
// Iteramos la consulta y lo añadimos al Array
foreach($c->query($consulta) as $fila) {
printf("'%s'@'%s'\n", $fila['user'], $fila['host']);
}
$mostrarJSON=true; // true: mostrará los datos JSON en php | false: guardará el fichero json en un fichero .json
if($mostrarJSON){
echo json_encode($sqlArray);
}else{
$listaTiendas = "json/listaTiendas.json";
$data = json_encode($sqlArray);
// Ojo, > de tener creada la carpeta 'json'
if ($fp = fopen($listaEmpleos, "w")){
fwrite($fp, $data);
}
fclose($fp);
}
?>