Ver Mensaje Individual
  #7 (permalink)  
Antiguo 30/10/2009, 12:58
Avatar de dggluz
dggluz
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Convertir un Objeto javascript a texto (string)

Disculpenmé que reviva un tema tan viejo, pero encontré un bug en este script y dado a que es una función bastante útil, me pareció importante modificarlo:
Cita:
Iniciado por Panino5001 Ver Mensaje
Fijate si te sirve:
Código PHP:
<script>
var 
objeto = {nivel:'A'nombre:'Costa Sur'personal:'145',algo:{pepe:123},otro:['a','b']};
var 
a='';
function 
recorrer(o){
    if(
o.constructor==Array)
        
a+='[';
    if(
o.constructor==Object)
        
a+='{';
    for(var 
i in o){
        if(
o.constructor!=Array)
            
a+=i+':';
        if(
o[i].constructor==Object){
            
recorrer(o[i]);
        }else if(
o[i].constructor==Array){
            
recorrer(o[i]);
        }else if(
o[i].constructor==String){
            
a+='"'+o[i]+'",';
        }else{
            
a+=o[i]+',';
        }
            
    }
    if(
o.constructor==Object)
        
a+='},';
    if(
o.constructor==Array)
        
a+='],';
    return 
a.substr(0,a.length-1).split(',}').join('}').split(',]').join(']');
}
alert(recorrer(objeto));
</script> 
Donde llama a la función recorrer recursivamente, no se está almacenando el valor que devuelve la función. El script corregido quedaría así:
Código javascript:
Ver original
  1. function recorrer(o)
  2. {
  3.     var a='';
  4.     if(o.constructor==Array)
  5.     {
  6.         a+='[';
  7.     }
  8.     if(o.constructor==Object)
  9.     {
  10.         a+='{';
  11.     }
  12.     for(var i in o)
  13.     {
  14.         if(o.constructor!=Array)
  15.         {
  16.             a+=i+':';
  17.         }
  18.        
  19.         if(o[i].constructor==Object)
  20.         {
  21.             a+=recorrer(o[i])+',';
  22.         }
  23.         else if(o[i].constructor==Array)
  24.         {
  25.             a+=recorrer(o[i])+',';
  26.         }
  27.         else if(o[i].constructor==String)
  28.         {
  29.             a+='"'+o[i]+'",';
  30.         }
  31.         else
  32.         {
  33.             a+=o[i]+',';
  34.         }
  35.     }
  36.     if(o.constructor==Object)
  37.     {
  38.         a+='},';
  39.     }
  40.     if(o.constructor==Array)
  41.     {
  42.         a+='],';
  43.     }
  44.     return a.substr(0,a.length-1).split(',}').join('}').split(',]').join(']');
  45. }

¡Suerte!

Última edición por dggluz; 30/10/2009 a las 13:04 Razón: Descubrí otro bug... faltaban un par de comas.