TransWikia.com

¿Cómo crear un JSON en php?

Stack Overflow en español Asked by user20482 on December 14, 2021

Estoy tratando de crear un archivo JSON en PHP para que se conecte con mi app en Android. Quiero que muestre el array, pero Android Studio tira “not found”, y al tratar de acceder a la página en el host, no aparece nada o igual marca error, ¿Qué está mal?

<?php

require_once(“JSON.php”);
$json = new Services_JSON;
$data = array(id => “ejemplo”, name => “ejemplo2”, email => "ejemplo3");
echo $json->encode($data);

?>

8 Answers

Yo ocupo la siguiente estructura para regresar un json con una validación en PHP pero lo puedes adaptar a tus necesidades:

  • primeo hay que declarar la variable $json un arreglo

  • la casilla "status" va a tener el valor ´ok´ y así con las siguientes casillas.

     `<?php
      $json=array();
      $json['status']='ok';
      $json['user']=$_SESSION['usuario'];
      echo json_encode($json);`
    

El resultado de mi ejemplo es: {"status":"ok","user":"Pablo"}

Saludos.

Answered by Juan Pablo Solana on December 14, 2021

Si quieres un JSON de objetos este código te puede funcionar.

function mijson{
   $items []= array("title" => "book", "price"=>"19.99");
   $versiones = array("productos" => array($items));
   json_encode($items);     

   return $items;
}

Answered by Casper on December 14, 2021

Para crear un JSON con PHP debes utilizar la función json_encode, que básicamente lo que hace es convertir un Array en un string con el formato JSON.

Un Ejemplo:

<?php
header('Content-Type: application/json');//cabecera json
$array = array("animal"=>"perro", "animal"=>"gato", "animal"=>"elefante");
echo json_encode($array);
?>

Revisa la documentación: http://php.net/manual/es/function.json-encode.php

Answered by Marce Arce on December 14, 2021

Como comenta Mariano en los comentarios estas utilizando comillas gráficas “ ” en vez de utilizar " ". Si cambias las comillas gráficas por las normales, quedaría tu código de la siguiente forma:

<?php
    require_once("JSON.php");
    $json = new Services_JSON;
    $data = array(id => "ejemplo", name => "ejemplo2", email => "ejemplo3");
    echo $json->encode($data);
?>

Por otro lado para crear un json a partir de un array o de una clase, existe la función json_encode propia de PHP y para decodificar está la función json_decode.

Te dejo a continuación unos ejemplos de cómo lo puedes hacer:

Ejemplo 1

json:

{ "nombre ": "Prueba json", "versiones": [ ["froyo", "2.2"], ["gingerbread", "2.3"] ] }

Codificación mediante clase:

$obj = new stdClass();
$obj->nombre = "Prueba json";
$obj->datos= array(
    array("froyo","2.2"),
    array("gingerbread","2.3")
);

echo json_encode($obj);

Ejemplo 2:

json:

{ "versiones_android": [ {"froyo":"2.2"}, {"gingerbread":"2.3"} ] }

Codificación mediante arrays:

$versiones = array(
    "versiones_android" => array(
        array(
            "froyo" => "2.2"
        ),
        array(
            "gingerbread" => "2.3"
        )
    )
);
echo json_encode($versiones);

Answered by Joacer on December 14, 2021

Hay diversas formas de crear mira yo lo hago así:

en primera instancia creo un conection.php:

<?php  
header('Access-Control-Allow-Origin: *');  
date_default_timezone_set("Chile/Continental");   
$con = mysqli_connect("localhost", "root", "", "saltala");  
?>  

y luego otro php llamado consulta.php

<?php      
header('Access-Control-Allow-Origin: *')  
date_default_timezone_set("Chile/Continental");   
// Including database connections  
require_once 'conection.php';  
// mysqli query to fetch all data from database  
$query = "SELECT rut, numero, servicio_id FROM Tickets";  
$result = mysqli_query($con, $query);  
$arr = array();  
if(mysqli_num_rows($result) != 0) {  
while($row = mysqli_fetch_assoc($result)) {  
$arr[] = $row;
 }  
}  
echo $json_info = json_encode($arr);  
?>

retornando finalmente en formato JSON los datos que solicite a mi db...

corre eso en un servidor local y veras que al abrir consulta.php en el navegador te mostrata todos los datos solicitados en JSON.

Saludos...

Answered by Hernan Humaña on December 14, 2021

Php incluye por defecto funciones para manejar JSON, por lo que no tendrás que incluir ninguna externa (A no ser que prefieras hacerlo así).

<?php
header('Content-Type: application/json');
$data = ['id' => "ejemplo", 'name' => "ejemplo2", 'email' => "ejemplo3"];
echo json_encode($data);

También he incluido una cabecera (header) para indicar que lo que se va a mostrar es JSON y he cambiado la manera de definir el Array (A partir de PHP 5.4 se posibilita usar la sintaxis corta de array). En el caso de que tengas una versión anterior o igual a 5.4, te recomiendo que actualices a 5.6 ó 7.0 ya que versiones anteriores son discontinuadas por PHP.

Answered by AntoTGa on December 14, 2021

Para hacer eso puedes tratar tu clase normalmente, y después hacer un parse con json_encode.

<?php
    $std = new stdClass();
    $std->nome = 'Json Parse';
    $std->url = 'http://es.stackoverflow.com';
    $std->data = '2016-10-28';
    $json = json_encode($std);
?>

Answered by pmargreff on December 14, 2021

Para crear un json a aprtir de un array en php, puedes hacerlo de la siguiente manera:

<?php
    $json = json_encode($dataArray);
    print_r($json);
?>

Te dejo un enlace a la documentacion oficial: http://php.net/manual/es/function.json-encode.php

Answered by user9099 on December 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP