Foros del Web » Programando para Internet » Javascript » Frameworks JS »

salida JSON

Estas en el tema de salida JSON en el foro de Frameworks JS en Foros del Web. Hola gente estoy tratando de dar una salida JSON, pero no encuentro una manera elegante de hacerlo. Saco los datos de un objeto que recibo. ...
  #1 (permalink)  
Antiguo 15/08/2008, 14:06
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 17 años, 3 meses
Puntos: 0
salida JSON

Hola gente estoy tratando de dar una salida JSON, pero no encuentro una manera elegante de hacerlo. Saco los datos de un objeto que recibo. el tema es que necesito poner una coma al final siempre y cuando siga teniendo elementos. asi lo estoy haciendo:

Código PHP:
$var='{"titulosBibliograficas":[';

foreach (
$object as $obj)
{
    
$var=$var.'{"tituloBiblio":{"idTitulo":"'.$obj->getId().'",
    "titulo":"'
.$obj->getTitulo().'",
    "subTitulo":"'
.$obj->getSubTitulo().'",;
                 $var=$var.'
}}[COLOR="Magenta"][B],[/B][/COLOR]';
}

$var=$var.'
]};

echo 
$var
esto me devuelve :
{"titulosbibliograficas":[
{"tituloBiblio":
{
"idTitulo":"1",
"titulo":"Uno",
"subtitulo":"dod"
}
}//aca iria coma
{"tituloBiblio":
{
"idTitulo":"2",
"titulo":"algo",
"subtitulo":"nose"
}
}
]}

Espero haber sido clara.
Gracias desde ya.
Saludos
  #2 (permalink)  
Antiguo 15/08/2008, 15:09
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Respuesta: salida JSON

pero si estas en php5.2.x existe json_encode() y json_decode()

sino buscate en phpclasses.org hay varias clases para hacer json
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 20/08/2008, 06:31
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: salida JSON

Si si, tenés razon, de esa forma lo pude solucionar... pero tengo otro inconveniente...
me quedo así:

Código PHP:
foreach ($object as $obj)
{
    
$titulo[idTitulo]=$obj->getId();
    
$titulo[titulo]=$obj->getTitulo();
    
$titulo[subtitulo]=$obj->getSubTitulo();

                
$tituloBibliografica[tituloBibliografica]=$titulo;
    
$array[titulosBibliograficas][]=$tituloBibliografica;

}


echo 
json_encode($array); 
el nuevo problema se me da cuando $object es null, es decir cuando no hay datos en la base, y no me devuelve ningun JSON.
Como puedo solucionarlo?
Saludos y gracias de antemano
Jesy
  #4 (permalink)  
Antiguo 20/08/2008, 06:38
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: salida JSON

Código PHP:
if($object) { 
 foreach (
$object as $obj)
 {
    
$titulo[idTitulo]=$obj->getId();
    
$titulo[titulo]=$obj->getTitulo();
    
$titulo[subtitulo]=$obj->getSubTitulo();

                
$tituloBibliografica[tituloBibliografica]=$titulo;
    
$array[titulosBibliograficas][]=$tituloBibliografica;

 }


  echo 
json_encode($array);  
}

else echo 
'Json doesn\'t exist'
  #5 (permalink)  
Antiguo 20/08/2008, 07:11
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: salida JSON

intente con eso pero me sigue dando error, puede que el poblema este en el javascript?

el JSON que armo con eso quedaria asi:

{"titulosBibliograficas":[{"tituloBibliografica":
{"idTitulo":"1",
"titulo":"Algo",
"subtitulo": No se",
}
}]}

y en javascript lo tomo así:

var res = eval('(' + ajax.responseText + ')');

var tabla = "<table width='100%' border='1'>";


for (var i=0;i<res.titulosBibliograficas.length;i++)
{
tabla+= "<td width='35%'>"+res.titulosBibliograficas[i].tituloBibliografica.titulo+"</td>";
tabla+= "<td width='35%'>"+res.titulosBibliograficas[i].tituloBibliografica.tituloColectivo+"</td>";
tabla+= "<td width='35%'>"+res.titulosBibliograficas[i].tituloBibliografica.serie+"</td></tr>";
}
tabla+="</table>";

document.getElementById("listaTitulos").innerHTML = tabla;

el error me lo tira en la linea: for (var i=0;i<res.titulosBibliograficas.length;i++)
dice: 'titulosBibliograficas' es nulo o no es un objeto
  #6 (permalink)  
Antiguo 20/08/2008, 08:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: salida JSON

Asi es, el problema esta en Javascript, debes de probar antes de hacer la evaluacion que titulosBibliograficas sea un objeto y tenga la propiedad de length.

Tema trasladado a AJAX.
  #7 (permalink)  
Antiguo 20/08/2008, 08:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 28
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: salida JSON

Te pongo un ejemple q uso:

Esta es mi cadena
<?php
$posx=(float)$_GET[getx];
$posy=(float)$_GET[gety];

$prueba = "{\"datos\":[{\"jposx\":$posx, \"jposy\":$posy, \"jpropietario\":\"$respuesta_propietario\" , \"jtipo\":\"$respuesta_tipo\" , \"junidad\":\"$respuesta_uni\" , \"jvelocidad\":\"$respuesta_vel\", \"jdistancia\":\"$respuesta_dis\"}]}";

echo $prueba;
?>

y desde mi interfaz envio mi peticion:

var url= "archivo_json.php?getx=" + x + "&gety=" + y;
var request = new Json.Remote(url, {onComplete: function(jsonObj)
{jsonObj.datos.each(function(dato)
{

add(dato.jposx, dato.jposy, dato.jpropietario, dato.jtipo, dato.junidad ,dato.jvelocidad,dato.jdistancia);

// Aca recupero mis datos...


});
},
onFailure: function(e)
{alert("url= " + url + " " + e.status);}
}).send(); //fin Json
  #8 (permalink)  
Antiguo 20/08/2008, 09:36
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: salida JSON

Hola Gente, lo solucione capturando el error con un try{}
Muchas gracias por todo

saludos
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 01:11.