Cómo sacar datos JSON correctamente usando PHP
Estoy desarrollando una aplicación de Android, y para la API estoy enviando mis solicitudes a una URL que debe devolver datos de JSON.
Esto es lo que estoy obteniendo en mi salida:
- Google Cloud Messaging a través del protocolo XMPP (servidor que trabaja con PHP y XMPPHP). ¿Como funciona?
- Cómo hacer que Android y Arduino se comuniquen sin un módulo inalámbrico
- C2DM con PHP usando OAuth2.0 (ClientLogin está obsoleto!)
- Caracteres especiales entre la aplicación de Android y el script PHP
- Algunas consultas sobre C2DM en Android
Y me gustaría que se muestre como respuesta de Twitter:
Estoy asumiendo que mi respuesta no está siendo analizada por la extensión JSON Formatter Chrome porque está codificada mal, por lo que mi aplicación no puede obtener los valores que necesito.
Aquí está mi código PHP:
<?php $response = array(); if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) { $name = $_POST['name']; $price = $_POST['price']; $description = $_POST['decription']; require_once __DIR__ . '/db_connect.php'; $db = new DB_CONNECT(); $result = mysql_query("INSER INTO products(name, price, description) VALUES('$name', '$price', '$description')"); if ($result) { $response["success"] = 1; $response["message"] = "Product successfully created."; echo json_encode($response); } else { $response["success"] = 0; $response["message"] = "Oops! An error occurred!"; echo json_encode($response); } } else { $response["success"] = 0; $response["message"] = "Required field(s) is missing"; echo json_encode($response); } ?>
Quiero saber cómo mostrar los datos JSON correctamente para que JSON Formatter y mi aplicación Android puedan analizarlo correctamente.
- Agregar una cookie a una solicitud HTTP
- Recuperar la imagen de mysql-php (android)
- Conectando MySql con Android sin usar PHP
- ¿Cuál es la diferencia entre C2DM y GCM
- Android y php
- Valor nulo devuelto de la conexión entre android y base de datos MYSQL
- Android, enviar mensajes a 1000 dispositivos rápidamente
- Sincronizar las bases de datos sqlite con mysql
Su problema es realmente muy fácil de resolver. El complemento JSON Formatter de Chrome sólo formatea su salida si el encabezado Content-Type está configurado en application / json.
Lo único que debe cambiar en su código es utilizar el header('Content-Type: application/json');
En su código PHP, antes de devolver los datos codificados por json.
La función json_encode de PHP toma un segundo argumento, para $options
. Aquí puede utilizar JSON_PRETTY_PRINT
para imprimirlo como se ve en la API de Twitter
P.ej
echo json_encode($my_array, JSON_PRETTY_PRINT);
Puede pasar un argumento a la función json_encode
la json_encode
manera:
echo json_encode($response, JSON_PRETTY_PRINT);
PHP 5.2.0 => http://php.net/manual/en/function.json-encode.php
Su JSON debe ser como su primera imagen; Todos en una línea aplastados juntos. Usted puede pasar su salida a jsonlint.com que puede ayudarle a encontrar sus datos typo / mal. TODAS las otras respuestas actuales podrían ayudarle a resolver su problema también. Todos ellos le dan diferentes opciones para dar formato a su salida si realmente quieres hacer eso.
Esta es otra forma de mostrar su JSON en HTML.
Si envuelve su respuesta en etiquetas HTML <pre>, mantendrá el formato de espacio en blanco.
Por ejemplo, uso jQuery para obtener algunos datos json y en jQuery tomar el objeto json y ponerlo directamente en un <pre> que está formateado
<pre class="output" style="text-align:left; width:80%; margin:0 auto">[ results ]</pre>
yo suelo
$('.output').html( JSON.stringify(data,null,4) );
Esto llevará su retorno de json, formatearlo con espacios con el HTML <pre> puede usar para formatearlo como usted quiere ver.
Si quieres tener tu código de color json … puedes usar http://prismjs.com/ o cualquier otro sistema de resaltado …
Su respuesta JSON ya está en buena forma. La respuesta que estás viendo es en el navegador Chrome. Es por eso que parece que. Si agregas debajo de la línea en código yoru
var_dump($response);
Y luego rightclick -> ver fuente en cromo brower, verá la estructura del árbol. De todos modos usted puede copiar su respuesta de JSON y comprobar el validy aquí
Lo mismo que yo creo primero cuando lo vi en cromo. A mí también me pasa.
Solo agrega pre Tag ->
<pre><?php ---you`r code--- ?> </pre>
y
echo json_encode($response, JSON_PRETTY_PRINT);
Después de agregar pre-etiqueta y JSON_PRETTY_PRINT estoy seguro de que su problema va a resolver.
- IllegalStateException que llama a MediaPlayer.reset ()
- Cifrar con Node.js módulo Crypto y descifrar con Java (en la aplicación de Android)