Codificación de una declaración SELECT como JSON, problemas de iOS

Estoy tratando de codificar JSON los resultados de mi declaración SQL SELECT usando PHP y no estoy seguro si estoy formateando mi matriz correctamente antes de codificar.

Mi código PHP es:

$stmt = $this->db->prepare('SELECT  CLINIC.clinic_name AS "clinicname" FROM CLINIC ORDER BY CLINIC.clinic_name ASC');

$stmt->execute();
$stmt->bind_result($clinicname);            
$test = array();                   
while($stmt->fetch()){
    $tempArray = array('clinicname' => $clinicname);
    array_push($test, $tempArray);
}
$stmt->close();

// Return clinics, encoded with JSON
header('Content-type: application/json');

$json = json_encode($test);
echo $json;

El resultado de la creación y codificación de esta matriz es:

[{"clinicname":"Bangor"},{"clinicname":"Belfast"},{"clinicname":"Crumlin"},{"clinicname":"Londonderry"}]

Así que tengo una matriz de matrices.

¿Estará bien para enviar como JSON? Todos los ejemplos que veo parecen ser una sola matriz. ¿Estoy en lo correcto hasta ahora?

Y luego, con respecto a iOS, ¿el objeto recibido será un NSDictionary o un NSArray?

Cualquier ayuda o comentario sobre lo anterior sería muy bien recibido.

  • Mat.

preguntado el 03 de mayo de 12 a las 16:05

3 Respuestas

Sí, su JSON está formateado correctamente. La próxima vez puedes usar un Validador JSON verificar.

Además, algunos detalles sobre codificación_json.

A [] representa una matriz y {} representa un objeto.

contestado el 03 de mayo de 12 a las 16:05

En iOS, si este es el resultado de una solicitud http, será del tipo NSString y luego deberá analizarse con algo como:

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html

que luego lo convierte a NSArray, NSDictionary NSString, etc.

contestado el 03 de mayo de 12 a las 16:05

Muchas gracias por las respuestas. Ok, estoy usando JSONKit para convertir la cadena de respuesta en un NSArray o NSDictionary. En última instancia, necesito poder obtener todos los valores para una clave específica (en este caso, 'clinicname'). ¿Cómo sería la mejor manera de hacer esto en Objective-C? ¿Cómo puedo devolver un valor para una clave cuando la clave es la misma cada vez? ¿Tiene sentido? - user1372898

Sí, puede enviar una matriz de matrices y puede acceder de la siguiente manera:

$response = json_decode($response,true);

  foreach ($response as $resp)
  {
    echo "<br>";
    print_r($resp);
  }  

ejemplo json:

[{"id":"38","first_name":"prueba","second_name":"example","first_surname":"prueba","second_surname":"GONZALEZ","email":"x@x.net","network_login":"x.x","pos_name":"x x","position":"1","active":"1"},{"vhur":"292","first_name":"c","second_name":"example","first_surname":"example","second_surname":null,"email":"example@example.com","network_login":"example.example","pos_name":"example example","position":"2","active":"1"}]

contestado el 03 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.