Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Construir array JSON en PHP

Estas en el tema de Construir array JSON en PHP en el foro de PHP en Foros del Web. Hola, necesito leer desde una app Android cierta estructura de JSON pero no consigo acabar de hacerla igual en PHP. Necesito obtener una estructura de ...
  #1 (permalink)  
Antiguo 14/06/2014, 12:33
 
Fecha de Ingreso: noviembre-2003
Ubicación: A Coruña
Mensajes: 89
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta Construir array JSON en PHP

Hola, necesito leer desde una app Android cierta estructura de JSON pero no consigo acabar de hacerla igual en PHP.

Necesito obtener una estructura de este estilo:

Código:
{"platos":[{"_id":"1","nombre":"Bacalao al Horno","precio":"25"},{"_id":"2","nombre":"Cochinillo asado","precio":"18"}]} 

--------
Sin embargo no consigo hacerla igual, dada mi poca experiencia en PHP, consigo algo parecido:

Código:
{"Cartas":{"_id":"5","nombre":"jhjgjhghjg","usuario":"1"}}
Para ello utilizo el siguiente codigo:


Código PHP:
$json2 = array('Cartas' => array());

foreach(
$cartas as $carta){

$json2['Cartas']['_id'] = $carta['id'];
$json2['Cartas']['nombre'] = $carta['nombre'];
$json2['Cartas']['usuario'] = $carta['usuario'];

}
    
echo 
json_encode($json2); 
¿Alguien me podría indicar que me falta en el codigo para lograr ese formato?

Ahora mismo parece que solo estoy leyendo la informacion de la primera carta, tendria que completar el JSON con todas las cartas que me devuelve $cartas.

Gracias
  #2 (permalink)  
Antiguo 14/06/2014, 12:56
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Construir array JSON en PHP

Cita:
Hola, necesito leer desde una app Android cierta estructura de JSON pero no consigo acabar de hacerla igual en PHP.
Si necesitas leer del app, entonces necesitas usar json_decode y no json_encode.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 14/06/2014, 13:03
 
Fecha de Ingreso: noviembre-2003
Ubicación: A Coruña
Mensajes: 89
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Construir array JSON en PHP

Hola hhs, desde la app leo ese formato que indico sin problemas usando json_encode, lo que necesito es crear ese formato particular de JSON usando PHP.

Gracias
  #4 (permalink)  
Antiguo 14/06/2014, 13:16
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Construir array JSON en PHP

Desde el momento que puedes leer el formato ya tienes la estructura; usa var_dump() con es puedes ver la estructura del objeto. Si lo requieres como arreglo, usa el segundo argumento de la función a true.
Código PHP:
Ver original
  1. $array = json_decode($json_msg, true);
  2. var_dump($array);
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 08/07/2014, 14:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: A Coruña
Mensajes: 89
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Construir array JSON en PHP

Hola hss, gracias por tus comentarios.

El json que intento leer tiene esta estructura:

Código:
array(1) { ["Cartas"]=> array(0) { } }
¿Como puedo hacer para convertirlo a la estructura que busco?

Gracias

Un Saludo
  #6 (permalink)  
Antiguo 08/07/2014, 14:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Construir array JSON en PHP

Si necesitas un array debes ir agregando un elemento nuevo en cada vuelta del foreach(), no sobreescribiendo el mismo item cada vez.

Código PHP:
Ver original
  1. $tmp = array('clave' => array());
  2. foreach (/* ... */) {
  3.   $tmp['clave'] []= array(
  4.     'foo' => $bar
  5.   );
  6. }

¿Se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: construir, json
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:27.