Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

350
Views
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!

about 4 years ago · Santiago Trujillo
2 answers
Answer question

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

about 4 years ago · Santiago Trujillo Report

0

Intente filtrar las propiedades que pertenecen al prototipo.

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

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!