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

262
Vistas
Función reviver JSON.parse(): cómo acceder a un objeto de nivel superior

Función JSON.parse Reviver: ¿Acceso al objeto que se está reviviendo?

Al leer este, probé el código a continuación para obtener el objeto completo que contiene la propiedad que especifiqué.

 let aTestStr = '{ "prop1": "this is prop 1", "prop2": { "prop2A": 25, "prop2B": 13, "prop2C": "This is 2-c" } }';
 let aTestStr = '{"prop1": "this is prop 1", "prop2": {"prop2A": 25, "prop2B": 13, "prop2C": "This is 2-c"}}'; let aTestObj = JSON.parse(aTestStr, function(key, value) { //at this point, 'this' refers to the object being revived //Eg, when key == 'prop1', 'this' is an object with prop1 and prop2 //when key == prop2B, 'this' is an object with prop2A, prop2B and prop2C if (key == "prop2B") { // the object being revived('this') is an object named 'prop2' // add a prop to 'this' this.prop2D = 60; console.log(this); } });

Volvería:

 {prop2B: 13, prop2C: 'This is 2-c', prop2D: 60}
  1. Supongo que omite la propiedad prop2A porque this detecta después de que el condicional encuentra prop2B ..? Agradecería saber por qué y cómo obtener acceso al objeto completo.

  2. Además, si tiene algo de tiempo, ¿puede explicar cómo obtener acceso al nivel más alto que this ? Por ejemplo, ¿hay alguna forma de imprimir prop2 (el nombre de this ) desde el condicional if (key == "prop2B") en la función reviver?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para la pregunta n. ° 1, es porque no devuelve nada de su reanimador, por lo que el objeto en realidad pierde sus propiedades que ya han sido analizadas.
Simplemente agregue el return value al final de su reviver para tener el objeto "completo".

 let aTestStr = '{"prop1": "this is prop 1", "prop2": {"prop2A": 25, "prop2B": 13, "prop2C": "This is 2-c"}}'; let aTestObj = JSON.parse(aTestStr, function(key, value) { if (key == "prop2B") { this.prop2D = 60; console.log(this); } return value; });

Y con respecto al #2, esto no es posible. JSON.parse() visita los valores desde las hojas hasta la raíz, por lo que el padre nunca apareció en el reanimador antes de que se hayan analizado todos los valores secundarios.
Lo mejor aquí es probablemente simplemente caminar de regreso a su objeto después de la reactivación.

about 4 years ago · Juan Pablo Isaza 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