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

263
Views
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 answers
Answer question

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