2011-11-11 5 views
5

Sé que esto es realmente básico, pero miré a todas partes y no puedo encontrar la respuesta correcta.Codificación de JSON en PHP para ser utilizado en la aplicación de iPhone

Con referencia a una pregunta anterior mío: How to format list in PHP to be used as an NSArray in Objective C?

he estado tratando de escribir un script PHP corta (sin saber nada al respecto) que mi aplicación para el iPhone llamará con el fin de obtener una lista de artículos. Pensé simplemente en usar ECHO, ya que REALMENTE no necesito enviar más de un conjunto de elementos, pero me recomendaron usar JSON o XML, así que elijo JSON.

Estoy buscando una forma de codificar la matriz en JSON y lo único que pude encontrar fue json_encode que no parece proporcionar una estructura JSON. Aquí está mi código PHP:

<?php 

$arr = array ('a', 'b','c','d','e'); 
echo json_encode($arr); 

?> 

¿Es esto lo que se supone que debo usar? ¿Estoy haciendo algo mal? Muchas gracias.

EDIT:

Eso es la salida cuando se ejecuta este script PHP en el terminal:

[ "a", "b", "c", "d", "e"]

Hasta donde sé, esta no es una estructura JSON, pero de nuevo, apenas sé nada al respecto.

+1

Si realiza una petición de URL en IOS con la dirección de la página que, básicamente, se obtiene la matriz codificada como JSON, entonces CNA decodificarlo en un NSArray en IOS – Daniel

+1

¿Por qué cree que no es json_encode proporcionando una estructura JSON? –

+0

@JasonMcClellan - ver mis ediciones. – TommyG

Respuesta

4

Eso es correcto hasta donde yo sé.

Una buena manera de probar si o no su JSON es válida es utilizar http://jsonlint.com/

Elaborar:

$arr = array ('a'=>'a value', 'b'=>'b value','c'=>'c value'); 
echo json_encode($arr); 
$arr = array ('a', 'b','c'); 
echo json_encode($arr); 

deben darle:

{"a":"a value","b":"b value","c":"c value"} 
["a","b","c"] 

Como ha señalado @ Jason McClellan, el segundo es correcto también.

Por lo tanto, sí, está haciendo lo correcto para codificar una matriz a algo legible por javascript.

La otra función es json_decode($json); que decodifica obviamente json. Documentación aquí: http://php.net/manual/en/function.json-encode.php

+2

JSON no requiere pares de clave => valor. JSON es solo la sintaxis de JS. En este ejemplo, codificó una matriz, por lo que obtuvo la sintaxis de JS para una matriz. Si utilizara una matriz asociativa, obtendría la sintaxis de JS para un objeto anónimo, que es lo que la mayoría de nosotros estamos acostumbrados a ver cuando pensamos en JSON. –

+1

ahh ... mi error, gracias por eso, mira la respuesta actualizada – jammypeach

Cuestiones relacionadas