Anteriormente hablamos de cómo mostrar datos desde JSON y una breve explicación de como crearlo pero ahora vamos con otros ejemplos y cómo podemos obtener resultados en json que posteriormente compartiremos con otros scripts.

[toc]

Creando Json con PHP

Desde su versión 5.2 php cuenta con la función json_encode() que nos permite generar json con facilidad a partir de cualquier arreglo generado desde PHP ya sea desde base de datos, generado manualmente o desde un formulario (lo que nos da una solución para almacenar múltiples respuestas en un solo campo de la base o permisos de usuario).

Retomemos el ejemplo anterior donde creamos un arreglo manualmente:

$objeto = [
    "alcaldia" => "Milpa Alta",
    "servicios" => ["Limpia", "Alumbrado","Agua"],
];
echo json_encode($objeto);

Resultando:

{"alcaldia":"Milpa Alta","servicios":["Limpua","Alumbrado","Agua"]}

Otra forma de crear un arreglo es utilizar array(); que se utilizaba desde hace bastante tiempo y aun es válido:

$objeto = array("alcaldia"=>"Milpa Alta", "servicios" => array("Limpia","Alumbrado","Agua"));

echo json_encode($objeto);

Esta es la forma “más sencilla” aunque laboriosa de hacer un json, si en algún momento se te ocurre generarlo de manera manual o simplemente el json que tienes no funciona te recomendamos primero validar JSON con la herramienta en línea existente en algo.mx.

Crear JSON a partir de un formulario con PHP

Dejando a un lado lo laborioso que resulta crear manualmente el arreglo podemos utilizar un formulario con los campos y nombres adecuados y convertir el resultado $_POST directamente utilizando la función json_encode, también podemos re formatearlo retomando las llaves existentes dentro de la variable.

Veamos el archivo demoformjson.php que usaremos de ejemplo:

json con php
<!doctype html>
<html lang="es">
  <head>
    <title>Formulario a JSON</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  </head>
  <body>
  <form action="" method="post">
  <label for="fname">First name:</label><br>
  <input type="text" id="fname" name="fname" value="John"><br>
  <label for="lname">Last name:</label><br>
  <input type="text" id="lname" name="lname" value="Doe"><br><br>
  <input type="submit" value="Submit">
</form>       
<?php if(isset($_POST["fname"])){
print_r($_POST); // Nos nuestra el array resultante
echo "<br/>";
print_r(json_encode($_POST)); //nos muestra el array convertido a JSON
}
?>
      </body>
</html>

Creamos un formulario sencillo con method=”post” (si lo desean pueden usar GET pero también tendrían que cambiar la forma en que reciben utilizando $_GET en lugar de $_POST y recuerden que si usan GET las variables son visibles en la barra de navegación).

Posteriormente validamos que exista $_POST con la llave fname para poder continuar, al continuar mostramos primero el array resultante y posteriormente el resultado en JSON.

Array ( [fname] => John [lname] => Doe )
{"fname":"John","lname":"Doe"}

Como podrán ver es bastante sencillo generar JSON sin errores con PHP reutilizarlos e incluso guardarlos en base de datos para retomarlos después, incluso podemos convertir los resultados de una consulta para reutilizarlos en otro script.

Espero les sea de utilidad estas formas de crear JSON con PHP, también les he compartido anteriormente como obtener JSON a partir de Google Sheets, el uso depende de ustedes cualquier duda en los comentarios.