Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

361
Vistas
Las claves JSON son diferentes cuando se usa console.log (objeto) y se itera sobre las claves del objeto

Tengo algunos problemas con un objeto JSON que recibo de mi servidor. El uso de console.log en el objeto JSON muestra correctamente el objeto JSON que envié desde el servidor, pero cuando intento iterar sobre las claves, comienza a actuar de manera extraña. Vea abajo.

 > console.log(promotions); {"promotion1":{"color":"white","backgroundColor":"red","text":"from promotion server"},"promotion2":{"color":"purple","backgroundColor":"yellow","text":"from promotion server2"},"promotion3":{"color":"green","backgroundColor":"black","text":"from promotion server3"}} > for (p in promotions) { console.log(p); } 0 1 2 3 4 ... (continues) 264 265 266 bold strip stripColors trap zalgo zebra rainbow random america reset dim italic underline inverse hidden strikethrough black ... (continues) magentaBG cyanBG whiteBG

Algunos detalles más:

Estoy enviando una solicitud desde un servidor ExpressJS usando http.request a otro servidor ExpressJS, que luego devuelve el objeto JSON de "promoción". No he podido saber si de alguna manera se corrompe (¿podría haber configurado mal la codificación?).

Probar usando el mismo objeto JSON pero codificado en lugar de enviarlo desde el otro servidor, da la respuesta correcta.

¡Gracias!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Su valor de promotions es la representación de cadena del JSON. Entonces, cuando haces tu ciclo for, itera a través de él como una cadena.

 var promotions = '{"promotion1":{"color":"white","backgroundColor":"red","text":"from promotion server"},"promotion2":{"color":"purple","backgroundColor":"yellow","text":"from promotion server2"},"promotion3":{"color":"green","backgroundColor":"black","text":"from promotion server3"}}'; for (var p in promotions) { console.log(p); }

Para saber por qué hace esto, vea estapregunta relacionada (aunque la verdad es que es solo una extraña consecuencia del hecho de que las cadenas son matrices detrás de escena, en cuyo caso debería mirar esta respuesta )

Si lo haces

 var promotions = '{"promotion1":{"color":"white","backgroundColor":"red","text":"from promotion server"},"promotion2":{"color":"purple","backgroundColor":"yellow","text":"from promotion server2"},"promotion3":{"color":"green","backgroundColor":"black","text":"from promotion server3"}}'; // convert string representation of JSON into actual object var promotionsObject = JSON.parse(promotions); for (var p in promotionsObject) { console.log(p); }

Debería funcionar como se esperaba. Solo tenga en cuenta que si desea revisar cada objeto e imprimir las propiedades de esos, deberá hacer un trabajo adicional. Ver Imprimir JSON anidado sin usar nombres de variables

over 4 years ago · Santiago Trujillo Denunciar

0

Intente filtrar las propiedades que pertenecen al prototipo.

 for (var p in promotions) { if (promotions.hasOwnProperty(p)) { console.log(p); } }

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda